WEB开发网
开发学院手机开发Android 开发 Android上使用XML SAX解析器 阅读

Android上使用XML SAX解析器

 2010-05-28 15:52:00 来源:WEB开发网   
核心提示:Java 环境中,当您需要一个速度快的解析器并且希望最大限度减少应用程序的内存占用时,Android上使用XML SAX解析器,通常可以使用 SAX API,这非常适用于运行 Android 的移动设备,您创建了一个新的名称为 RssHandler 的类,并将它注册为解析器的处理程序,您可以在 Java 环境中照原样使

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

清单 5. SAX 实现

public class SaxFeedParser extends BaseFeedParser {

protected SaxFeedParser(String feedUrl){

super(feedUrl);

}

public List 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 解析器接收事件。在本例中,您创建了一个新的名称为 RssHandler 的类,并将它注册为解析器的处理程序,如清单 6 所示。

清单 6. SAX 处理程序

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

public class RssHandler extends DefaultHandler{

private List messages;

private Message currentMessage;

private StringBuilder builder;

public List 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);

1 2 3  下一页

Tags:Android 使用 XML

编辑录入:coldstar [复制链接] [打 印]
赞助商链接