android开发之使用SAX API 开发xml rss解析器

  次阅读 作者:智能小宝 来源:互联网 2016-01-19 11:29 我要评论(0)

在Java环境中,当您需要一个速度快的解析器并且希望最大限度减少应用程序的内存占用时,通常可以使用SAX API。这非常适用于运行Android的移动设备。您可以在Java环境中照原样使用SAX API,在Android上运行它不需要做任何修改。显示了de>FeedParserde>接口的一个SAX实现。

如示例所示,一个 de >ITEMde > 对应于一个 de >Messagede > 实例。项目的子节点(de >TITLEde >、de >LINKde > 等)对应于 de >Messagede > 实例的属性。现在,您已经对提要有了一定的认识,并且已经创建了所有常用部分,接下来看看如何使用 Android 上可用的各种技术来解析这个提要。您将从 SAX 开始。

使用 SAX

在 Java 环境中,当您需要一个速度快的解析器并且希望最大限度减少应用程序的内存占用时,通常可以使用 SAX API。这非常适用于运行 Android 的移动设备。您可以在 Java 环境中照原样使用 SAX API,在 Android 上运行它不需要做任何修改。显示了 de >FeedParserde > 接口的一个 SAX 实现。

SAX 实现

java代码

public class SaxFeedParser extends BaseFeedParser {

protected SaxFeedParser(String feedUrl){

super(feedUrl);

}

public List< Message > parse() {

SAXParserFactory factory = SAXParserFactory.newInstance();

try {

SAXParser parser = factory.newSAXParser();

RssHandler handler = new RssHandler();

parser.parse(this.getInputStream(), handler);

return handler.getMessages();

} catch (Exception e) {

throw new RuntimeException(e);

}

}

}

如果您以前使用过 SAX,那么这对您肯定非常熟悉。与任何 SAX 实现相同,大多数细节都在 SAX 处理程序中。在分解 XML 文档时,处理程序从 SAX 解析器接收事件。在本例中,您创建了一个新的名称为 de >RssHandlerde > 的类,并将它注册为解析器的处理程序,如 所示。

SAX 处理程序

import static org.developerworks.android.BaseFeedParser.*;

public class RssHandler extends DefaultHandler{

private List< Message > messages;

private Message currentMessage;

private StringBuilder builder;

public List< Message > getMessages(){

return this.messages;

}

@Override

public void characters(char[] ch, int start, int length)

throws SAXException {

super.characters(ch, start, length);

builder.append(ch, start, length);

}

@Override

public void endElement(String uri, String localName, String name)

throws SAXException {

super.endElement(uri, localName, name);

if (this.currentMessage != null){

if (localName.equalsIgnoreCase(TITLE)){

currentMessage.setTitle(builder.toString());

} else if (localName.equalsIgnoreCase(LINK)){

currentMessage.setLink(builder.toString());

本站文章信息来源于网络以及网友投稿,本站只负责对文章进行整理、排版、编辑,是出于传递更多信息之目的,并不意味着赞同其观点或证实其内容的真实性。如果您有什么意见或建议,请联系QQ28-1688-302!

人工智能实验室
相关文章相关文章
  • 韩春雨称已能重复实验结果 近期将有消息公布

    韩春雨称已能重复实验结果 近期将有消息公布

  • 英国研发“杀生”机器人 通过生命体获取能量

    英国研发“杀生”机器人 通过生命体获取能量

  • 无人驾驶汽车如何改变城市生活?听听他们怎么说

    无人驾驶汽车如何改变城市生活?听听他们怎么说

  • 未来两年人工智能要怎么走?看这篇就够了

    未来两年人工智能要怎么走?看这篇就够了

网友点评网友点评
阅读推荐阅读推荐

据国外媒体报道,在过去两年内,聊天机器人(chatbot)、人工智能以及机器学习的研发和采用取得了巨大进展。许多初创公司正利用人工智能和...

霍金 视觉中国 图 英国著名物理学家霍金(Stephen Hawking)再次就人工智能(AI)发声,他认为:对于人类来说,强大AI的出现可能是最美妙的...

文|郑娟娟 今年,人工智能(AI) 60岁了。在AI60岁的时候,笔者想要介绍一下AI100,一个刚刚2岁的研究项目,但它的预设寿命是100年,甚至更长...

AlphaGo与李世石的人机大战,为大众迅速普及了人工智能的概念。 但对谷歌而言,除了下围棋,现在的人工智能进展到哪一步了?未来,人工智能...