WEB开发网
开发学院手机开发Android 开发 Android xml读写 阅读

Android xml读写

 2010-05-31 14:32:00 来源:WEB开发网   
核心提示:Android SDK 提供了一个名称为 de >android.util.Xmlde > 的实用类,清单 7 展示了如何使用这个相同的实用类来设置一个 SAX 解析器,Android xml读写(8),清单 7. Android SAX 解析器public class AndroidSaxFeedPars

Android SDK 提供了一个名称为 de >android.util.Xmlde > 的实用类。清单 7 展示了如何使用这个相同的实用类来设置一个 SAX 解析器。

清单 7. Android SAX 解析器

public class AndroidSaxFeedParser extends BaseFeedParser {

public AndroidSaxFeedParser(String feedUrl) {

super(feedUrl);

}

public List< Message > parse() {

RssHandler handler = new RssHandler();

try {

Xml.parse(this.getInputStream(), Xml.Encoding.UTF_8, handler);

} catch (Exception e) {

throw new RuntimeException(e);

}

return handler.getMessages();

}

}

注意,这个类仍然使用了一个标准的 SAX 处理程序,因此您仅仅重用了 清单 7 中所示的 de >RssHandlerde >。能够重用 SAX 处理程序是非常不错的,但其代码稍微有些复杂。您可以想像,如果需要解析一个更加复杂的 XML 文档,则处理程序可能会带来各种各样的 bug。举例来说,回头看看 清单 6 中的 de >endElementde > 方法。注意,在尝试设置属性之前,它检查了 de >currentMessagede > 是否为 null。现在,再回头看看 清单 4 中的示例 XML。 注意,de >ITEMde > 标记外部有一些 de >TITLEde > 和 de >LINKde > 标记。这就是使用 null 检查的原因。否则,每一个 de >TITLEde > 标记 会导致一个 de >NullPointerExceptionde >。Android 提供了自己独有的 SAX API(参见 清单 8),它排除了您编写自己的 SAX 处理程序的需要。

清单 8. 经过简化的 Android SAX 解析器

public class AndroidSaxFeedParser extends BaseFeedParser {

public AndroidSaxFeedParser(String feedUrl) {

super(feedUrl);

}

public List< Message > parse() {

final Message currentMessage = new Message();

RootElement root = new RootElement("rss");

final List< Message > messages = new ArrayList< Message >();

Element channel = root.getChild("channel");

Element item = channel.getChild(ITEM);

上一页  3 4 5 6 7 8 9 10 11 12 13  下一页

Tags:Android xml 读写

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