android的xml解析有哪些?有什么区别?

在Android平台上可以使用SAX(Simple API for XML)Document Object Model(DOM)Android附带的Pull解析器解析XML文件

DOM解析: 处理大型文件时其性能下降的非常厉害。这个问题是由DOM的树结构所造成的,这种结构占用的内存较多,而且DOM必须在解析文件之前把整个文档装入内存,适合对XML的随机访问

解析过程:

1.      获取factory

DocumentBuilderFactory  builderFactory =DocumentBuilderFactory.newInstance();

2.      获取builder

builder =builderFactory.newDocumentBuilder();

3.      解析为Document对象

Document document  = builder.parse(xmlFile);

4.      获取根元素

Element root = document.getDocumentElement();

扫描二维码关注公众号,回复: 304310 查看本文章

5.      获取根元素下的子节点

NodeList childNodes =root.getChildNodes();

SAX解析: 不像DOM,SAX是事件驱动型的XML解析方式。它顺序读取XML文件,不需要一次全部装载整个文件。当遇到像文件开头,文档结束,或者标签开头与标签结束时,它会触发一个事件,用户通过在其回调事件中写入处理代码来处理XML文件,适合对XML的顺序访问。

1.      获取factory

SAXParserFactory factory =SAXParserFactory.newInstance();

2.      获取Parser

SAXParser parser =factory.newSAXParser();

3.      开始解析

parser.parser(xmlFile, newMySAXListener());

PULL解析:  除了可以使用 SAX和DOM解析XML文件,大家也可以使用Android内置的Pull解析器解析XML文件。 Pull解析器的运行方式与 SAX 解析器相似。它提供了类似的事件,如:开始元素和结束元素事件,使用parser.next()可以进入下一个元素并触发相应事件。事件将作为数值代码被发送,因此可以使用一个switch对感兴趣的事件进行处理。当元素开始解析时,调用parser.nextText()方法可以获取下一个Text类型元素的值。

1.      获取parser

XmlPullParserparser = Xml.newPullParser();

2.      设置输入

parser.setInput(instream, “UTF-8”);

3.      获取事件类型

int eventType = parser.getEventType();

4.      开始解析

猜你喜欢

转载自jishudaren.iteye.com/blog/2297524