Androidxml读写(六)

新的 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. }
  5. public List< Message > parse() {
  6. DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance();
  7. List< Message > messages = new ArrayList< Message >();
  8. try {
  9. DocumentBuilder builder = factory.newDocumentBuilder();
  10. Document dom = builder.parse(this.getInputStream());
  11. Element root = dom.getDocumentElement();
  12. NodeList items = root.getElementsByTagName(ITEM);
  13. for (int i=0;i< items.getLength();i++){
  14. Message message = new Message();
  15. Node item = items.item(i);
  16. NodeList properties = item.getChildNodes();
  17. for (int j=0;j< properties.getLength();j++){
  18. Node property = properties.item(j);
  19. String name = property.getNodeName();
  20. if (name.equalsIgnoreCase(TITLE)){
  21. message.setTitle(property.getFirstChild().getNodeValue());
  22. } else if (name.equalsIgnoreCase(LINK)){
  23. message.setLink(property.getFirstChild().getNodeValue());
  24. } else if (name.equalsIgnoreCase(DESCRIPTION)){
  25. StringBuilder text = new StringBuilder();
  26. NodeList chars = property.getChildNodes();
  27. for (int k=0;k< chars.getLength();k++){
  28. text.append(chars.item(k).getNodeValue());
  29. }
  30. message.setDescription(text.toString());
  31. } else if (name.equalsIgnoreCase(PUB_DATE)){
  32. message.setDate(property.getFirstChild().getNodeValue());
  33. }
  34. }
  35. messages.add(message);
  36. }
  37. } catch (Exception e) {
  38. throw new RuntimeException(e);
  39. }
  40. return messages;
  41. }
  42. }

当前题目:Androidxml读写(六)
网站链接:http://www.36103.cn/qtweb/news34/29984.html

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

广告

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