在android中解析xml数据-williamhua的blog

在android中解析xml数据-williamhua的blog

ID:42668752

大小:58.50 KB

页数:5页

时间:2019-09-19

在android中解析xml数据-williamhua的blog_第1页
在android中解析xml数据-williamhua的blog_第2页
在android中解析xml数据-williamhua的blog_第3页
在android中解析xml数据-williamhua的blog_第4页
在android中解析xml数据-williamhua的blog_第5页
资源描述:

《在android中解析xml数据-williamhua的blog》由会员上传分享,免费在线阅读,更多相关内容在工程资料-天天文库

1、在Android中解析XML数据・WilliamHua的Blog在Android'

2、'解析XML数据说起XML,总会有DOM>SAX、JDOM、DOM4J>Xerces、JAXP等一堆名词蹦出来,但是很多人总是会弄混他们之间的关系,这对我们理解XML文件的解析很不利。要挑选一个适合在Android平台上使用的XML解析方案,我们还是得先把这些概念厘清。XML解析的基本概念和DOM(文档对彖模型)是JAXP规范(JavaAPIforXMLProcessing)定义的2种不同的对XML文档进行分析、处理的方法。DOM

3、方法是用标准的对象模型表示XML文档;SAX方法则使用事件模型来处理程序来处理XMLoJAXP完成了对SAX、DOM的包装,它向应用程序提供针对DOM的DocumcntBu订dcrFactory、DocumcntBu订dcr和针对SAX的SAXParserFactory>SAXParser抽彖工厂类。在JaveSE中JAXP对应javax.xml.parsers包,DOM对应org.w3c.dom,而SAX对应org.xml.sax。Xcrccs首先继承并实现了javax.xml.parser包内的SAXPars

4、er>SAXParserFactory>DocumentBuilder>DocumentBuilderFactory等抽彖类,并提供了JAXP屮所定义的DOM、SAX(以及StAX,后面会介绍)这些XML解析方法的实现和相应的Parsero至于JDOM和DOM4J,是因为有人觉得W3C的DOM标准API太过难用而着手开发的替代API,它们和JAXP—样都是对DOM、SAX的封装,不过JDOM、D0M4J做了更多的事情,相当于上面提到JAXP接口+XercesDOM实现部分。JDOM并没有白己开发Parser,所以

5、还是需要利用Xerces的Parser部分,而DOM4J自带一个名为Alfrcd2的Parser,当然也可以使用Xerces的Parsero看起来JAXP具备更好的可移植性,即我们以通过修改配置文件切换不同的D0M实现和SAX、DOMParser,JDOM、D0M4J虽然也可以切换Parser,但是DOM实现是无法切换的。参考:JavaEyeRobbinJavaXMLAPI漫谈IBMDWJAXPBrettMcLaughlin全面介绍,第1部分Android系统中XML解析方案的选择DOM解析器是通过将XML文档解

6、析成树状模型并将其放入内存來完成解析工作的,而后对文档的操作都是在这个树状模型上完成的。这个在内存中的文档树将是文档实际大小的几倍。这样做的好处是结构清除、操作方便,而带来的麻烦就是极其耗费系统资源。而SAX正好克服了DOM的缺点,分析能够立即开始,而不是等待所有的数据被处理。而且,由于应用程序只是在读取数据时检查数据,因此不需要将数据存储在内存中,这对于大型文档来说是个巨大的优点。事实上,应用程序甚至不必解析整个文档;它可以在某个条件得到满足时停止解析。选择DOM述是选择SAX,这収决于下而儿个因素:应用程序的

7、1=1的:如果打算对数据作出更改并将它输出为XML,那么在人多数情况下,DOM是适当的选择。并不是说使用SAX就不能更改数据,但是该过程要复杂得多,因为您必须对数据的一份拷贝而不是对数据本身作出更改。数据容量:对于大型文件,SAX是更好的选样。数据将如何使用:如果只有数据中的少量部分会被使用,那么使用SAX来将该部分数据提取到应用程序中可能更好。另一方面,如果您知道白己以后会回头引用己处理过的人量信息,那么SAX也许不是恰当的选择。对速度的需要:SAX实现通常要比DOM实现更快。基于上面的分析,在基于Androi

8、d系统的内存和CPU资源比鮫有限的手持设备上,只要我们不需要修改XML数据或者随机的访问XML数据,SAX尽管可能需要更多的编码T作,但是为了更小的内存和CPU消耗,还是值得的。另外,AndroidSDK中已经包含了JAXP对应的javax.xml.parsers包,和SAX对应org.xml.sax(当然DOM对应的org.w3c.dom包也包含在内),加上Android还提供了android.sax这样的包来方便SAXHandle的开发,基于JAXP和SAX这样的标准方法來开发不仅复杂度不高,即使出现问题在讨

9、论组中寻求解决方案也是比较容易的。参考:IBMDW王晓强使用SAX处理XML文档chuansirDOMSAXJAXPDOM4JJDOMxerces解析器Android系统中XML解析的实践基于上面的分析,采用JAXP+SAX的方案是我比较看好的。我们首先需要又一个SAXParserFactory的实例,然后从TJ'111得到一个SAXParser实例,进而获取一个XMLR

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。