xml解析:Sax,Dom,pull解析

Sax

1.startDocument()文档开始

2.endDocument()文档结束

3.startElement(String namespaceURI,String localName,String qName,Attributes atts);

  元素开始,localName是元素名

1.4endElement(String uri, String localName, String name)事件

1.5characters(char[] ch, int start, int length)

SAXParserFactory spf = SAXParserFactory.newInstance();//工厂

SAXParser saxParser = spf.newSAXParser();//解析器

//XMLContextHandler extends DeafaultHandler

XMLContextHandler handler = new XMLContextHandler();

saxParser.parse(inStream,handler);

inStream.close();

return handler.getPersons();

每当遍历到文本节点时,会触发该事件

public void characters(char[] ch,int start,in length);

DOM

DocumentBuilder builder = DocumentBuilderFactory.newDocumentBuilder();

Document dom = builder.parse(inStream);

Element root = dom.getDocumentElement();

NodeList items = root.getElementsByTagName("person");//查找所有person节点

for(...){

Node = ...

((Element)node).getAttribute("id");

if(node.getNodeType == Node.ELEMENT_NODE){

...

}

}

/*

取得文本节点

*/

node.getTextContext();

Android-Pull解析Xml

Android内置的pull解析器解析XML文件.Pull解析器是一个开源的java项目,既可以用于android,也可以用于JavaEE,如果用在javaEE需要把其jar文件放入路径中,因为Android已经集成进了Pull解析器,所以无需添加任何jar文件。Android系统本省使用到的各种xml文件,其内部也是采用Pull解析器进行解析的,Pull解析器的运行方式与SAX解析器相似。它提供了类似的时间,如:开始元素和结束元素事件,使用parser.next()可以进入下一个元素并触发相应事件。跟SAX不同的是,Pull解析器产生的事件是一个数字,而非方法,因此可以使用一个switch对感兴趣的事件进行处理。当元素开始解析时,调用parser.nextText()方法可以获取下一个Text类型节点的值。

XmlPullParser parser = Xml.newPullParser();

parser.setInput(inStream, "UTF-8");

int etype = parser.getEventType();

while (etype != XmlPullParser.END_DOCUMENT) {

switch (etype) {

case XmlPullParser.START_DOCUMENT:

    parser.getName();

case XmlPullParser.START_TAG:

}

etype = parse.next();

}

 

上一篇:JVM 内部运行线程介绍


下一篇:Maven本地jar包部署与安装:dubbox-2.8.4.jar