Android xml读写
2010-05-31 14:32:00 来源:WEB开发网}
@Override
public void startElement(String uri, String localName, String name,
Attributes attributes) throws SAXException {
super.startElement(uri, localName, name, attributes);
if (localName.equalsIgnoreCase(ITEM)){
this.currentMessage = new Message();
}
}
}
de >RssHandlerde > 类扩展了 de >org.xml.sax.helpers.DefaultHandlerde > 类。该类为 SAX 解析器生成的事件所对应的所有方法都提供了一个默认的非操作实现。这允许子类根据需要仅覆盖一些方法。de >RssHandlerde > 提供了一个额外的 API,即 de >getMessagesde >。它返回处理程序在从 SAX 解析器接收事件时所收集的 de >Messagede > 对象列表。它有另外两个内部变量,de >currentMessagede > 针对被解析的 de >Messagede > 实例,以及名称为 de >builderde > 的 de >StringBuilderde > 变量,用于存储文本节点中的字符数据。解析器将相应事件发送给处理程序时会调用 de >startDocumentde > 方法,这两个变量的初始化操作就是在此时完成。
查看 清单 6 中的 de >startElementde > 方法。在 XML 文档中每次遇到开始标记时都会调用它。您只关心该标记何时为 de >ITEMde > 标记。对于这种情况,您将创建一个新的 de >Messagede >。现在来看 de >charactersde > 方法。遇到文本节点中的字符数据时便会调用此方法。数据只是被添加到 de >builderde > 变量中。最后,我们来看 de >endElementde > 方法。遇到结束标记时会调用此方法。对于与某 de >Messagede > 属性相对应的标记,如 de >TITLEde > 和 de >LINKde >,则使用 de >builderde > 变量中的数据在 de >currentMessagede > 上设置适当的属性。如果结束标记是一个 de >ITEMde >,则 de >currentMessagede > 将被添加到 Messages 列表中。所有这些都是非常典型的 SAX 解析;此处的一切都不是 Android 所特有的。因此,如果您知道如何编写 Java SAX 解析器,则应该知道如何编写 Android SAX 解析器。但是,Android SDK 确实在 SAX 上添加了一些便捷的特性。
回页首
更加简单的 SAX 解析
更多精彩
赞助商链接