Android xml读写(六)

移动开发 Android
所有代码都是可选的。如果您习惯Java环境中的标准SAX解析代码,那么您可以坚持使用它。如果您希望尝试android sdk所提供的便捷的包装器,那么也可以使用它。如果您完全不希望使用SAX会怎样呢?可以使用一些备选方案。其中的首选方法就是 DOM。Android完全支持DOM解析,就像在桌面机器或服务器上使用Java代码运行它一样。

新的 SAX 解析代码并未使用 SAX 处理程序,而是使用了 SDK 中的 android.sax 包中的类。这些类允许您构建 XML 文档的结构,并根据需要添加事件监听程序。在以上代码中,您声明文档将有一个 de >rssde > 根元素,并且它有一个 de >channelde > 子元素。然后,您声明 de >channelde > 将有一个 de >ITEMde > 子元素,并且开始添加监听程序。对于每个监听程序,您都使用了一个实现了特定接口(de >EndElementListnerde > 或 de >EndTextElementListenerde >)的匿名内部类。注意,您不需要跟踪字符数据。不仅仅因为这样会更加简单,更重要的是更加高效。***,在调用 Xml.parse 实用方法时,您将传递一个通过根元素生成的处理程序。

所有代码都是可选的。如果您习惯 Java 环境中的标准 SAX 解析代码,那么您可以坚持使用它。如果您希望尝试 android sdk 所提供的便捷的包装器,那么也可以使用它。如果您完全不希望使用 SAX 会怎样呢?可以使用一些备选方案。其中的***方法就是 DOM。

Android 完全支持 DOM 解析,就像在桌面机器或服务器上使用 Java 代码运行它一样。显示了一个基于 DOM 的解析器接口实现。

基于 DOM 的提要解析器实现

java代码:

  1. public class DomFeedParser extends BaseFeedParser { 
  2. protected DomFeedParser(String feedUrl) { 
  3. super(feedUrl); 
  4. public List< Message > parse() { 
  5. DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance(); 
  6. List< Message > messages = new ArrayList< Message >(); 
  7. try { 
  8. DocumentBuilder builder = factory.newDocumentBuilder(); 
  9. Document dom = builder.parse(this.getInputStream()); 
  10. Element root = dom.getDocumentElement(); 
  11. NodeList items = root.getElementsByTagName(ITEM); 
  12. for (int i=0;i< items.getLength();i++){ 
  13. Message message = new Message(); 
  14. Node item = items.item(i); 
  15. NodeList properties = item.getChildNodes(); 
  16. for (int j=0;j< properties.getLength();j++){ 
  17. Node property = properties.item(j); 
  18. String name = property.getNodeName(); 
  19. if (name.equalsIgnoreCase(TITLE)){ 
  20. message.setTitle(property.getFirstChild().getNodeValue()); 
  21. else if (name.equalsIgnoreCase(LINK)){ 
  22. message.setLink(property.getFirstChild().getNodeValue()); 
  23. else if (name.equalsIgnoreCase(DESCRIPTION)){ 
  24. StringBuilder text = new StringBuilder(); 
  25. NodeList chars = property.getChildNodes(); 
  26. for (int k=0;k< chars.getLength();k++){ 
  27. text.append(chars.item(k).getNodeValue()); 
  28. message.setDescription(text.toString()); 
  29. else if (name.equalsIgnoreCase(PUB_DATE)){ 
  30. message.setDate(property.getFirstChild().getNodeValue()); 
  31. messages.add(message); 
  32. catch (Exception e) { 
  33. throw new RuntimeException(e); 
  34. return messages; 

 

责任编辑:闫佳明 来源: my.eoe.cn
相关推荐

2013-06-09 10:25:56

Android开发XML读写XML解析

2013-06-09 10:37:53

Android开发XML读写XML解析

2013-06-09 10:18:29

Android开发XML读写XML解析

2013-06-09 11:31:13

Android开发XML读写XML解析

2013-06-09 10:04:35

Android开发XML读写XML解析

2013-06-09 12:53:05

Android开发XML读写XML解析

2013-06-09 13:07:23

Android开发XML读写XML解析

2011-11-08 10:01:53

TinyXML

2013-06-08 13:02:11

Android开发XML解析

2013-06-08 11:04:18

Android开发Pull解析XMLAndroid XML

2013-06-08 13:07:54

Android开发Android UILayout XML属

2010-12-23 09:11:17

读写Android文件

2013-06-08 13:18:50

Android开发XML构造技巧XML解析

2013-06-08 12:49:03

Android开发XML定义菜单

2013-06-08 13:29:27

Android开发DOM读取XMLXML解析

2013-04-01 14:35:10

Android开发Android自定义x

2010-01-25 18:22:33

Android使用XM

2013-06-08 11:13:00

Android开发XML解析

2013-06-08 13:37:28

Android开发XML解析Pull方式

2011-03-30 17:32:28

androidmaniAndroid开发
点赞
收藏

51CTO技术栈公众号