AndroidXML读写(七)

与***个 SAX 示例类似,以上代码完全没有特定于 Android 的地方。DOM 解析器将所有 XML 文档读取到内存中,然后允许您使用 DOM API 遍历 XML 树、检索所需的数据。这是非常直观的代码,并且,在某些方面比基于 SAX 的实现更加简单。但是,DOM 通常更加占用内存,因为一切内容都会先读取到内存中。这对于运行 Android 的移动设备来说是一个问题,但是当 XML 文档始终保持很小的大小时是可行的。这可能意味着,Android 的开发人员会认为 SAX 解析在 Android 应用程序上更加常见,因此为它提供了额外的实用工具。Android 还提供了另一种类型的 XML 解析器,它就是 pull 解析器。

成都创新互联公司是一家专注于做网站、网站建设与策划设计,城西网站建设哪家好?成都创新互联公司做网站,专注于网站建设10多年,网设计领域的专业建站公司;建站业务涵盖:城西等地区。城西做网站价格咨询:028-86922220

XML pull 解析器

如前所述,Android 并未提供对 Java StAX API 的支持。但是,Android 确实附带了一个 pull 解析器,其工作方式类似于 StAX。它允许您的应用程序代码从解析器中获取事件,这与 SAX 解析器自动将事件推入处理程序相反。清单 10 显示了提要解析接口的一个 pull 解析器实现。

清单 10. 基于 Pull 解析器的实现

java代码:

 
 
  1. public class XmlPullFeedParser extends BaseFeedParser { 
  2. public XmlPullFeedParser(String feedUrl) { 
  3. super(feedUrl); 
  4. public List< Message > parse() { 
  5. List< Message > messages = null; 
  6. XmlPullParser parser = Xml.newPullParser(); 
  7. try { 
  8. // auto-detect the encoding from the stream 
  9. parser.setInput(this.getInputStream(), null); 
  10. int eventType = parser.getEventType(); 
  11. Message currentMessage = null; 
  12. boolean done = false; 
  13. while (eventType != XmlPullParser.END_DOCUMENT && !done){ 
  14. String name = null; 
  15. switch (eventType){ 
  16. case XmlPullParser.START_DOCUMENT: 
  17. messages = new ArrayList< Message >(); 
  18. break; 
  19. case XmlPullParser.START_TAG: 
  20. name = parser.getName(); 
  21. if (name.equalsIgnoreCase(ITEM)){ 
  22. currentMessage = new Message(); 
  23. } else if (currentMessage != null){ 
  24. if (name.equalsIgnoreCase(LINK)){ 
  25. currentMessage.setLink(parser.nextText()); 
  26. } else if (name.equalsIgnoreCase(DESCRIPTION)){ 
  27. currentMessage.setDescription(parser.nextText()); 
  28. } else if (name.equalsIgnoreCase(PUB_DATE)){ 
  29. currentMessage.setDate(parser.nextText()); 
  30. } else if (name.equalsIgnoreCase(TITLE)){ 
  31. currentMessage.setTitle(parser.nextText()); 
  32. break; 

 

本文题目:AndroidXML读写(七)
分享网址:http://www.csdahua.cn/qtweb/news49/235349.html

网站建设、网络推广公司-快上网,是专注品牌与效果的网站制作,网络营销seo公司;服务项目有等

广告

声明:本网站发布的内容(图片、视频和文字)以用户投稿、用户转载内容为主,如果涉及侵权请尽快告知,我们将会在第一时间删除。文章观点不代表本网站立场,如需处理请联系客服。电话:028-86922220;邮箱:631063699@qq.com。内容未经允许不得转载,或转载时需注明来源: 快上网