将 XmlReader 与 SAX 读取器比较
更新:November 2007
与 XML 的简单 API (SAX) 读取器类似,XmlReader 是一个只进、只读的游标。 它提供了对输入的快速和非缓存的流式访问。 它可以读取流或文档。 它使用户可以提取数据,并跳过对应用程序没有意义的记录。 较大的差异在于 SAX 模型是一个“推送”模型,其中分析器将事件推到应用程序,在每次读取新节点时通知应用程序,而使用 XmlReader 的应用程序可以随意从读取器提取节点。 这种提取模型的优点在于以下方面:
优点 |
说明 |
---|---|
状态管理 |
推送模型要求内容处理程序生成非常复杂的状态机器。 提取模型客户端通过自然的、由上而下的过程优化简化了状态管理。 |
多个输入流 |
提取模型允许客户端汇合多个输入流。 而要在推送模型中进行此操作是非常复杂的。 |
分层 |
推送模型可以建立在提取模型的基础上。 反之则不行。 |
避免多余的字符串复制 |
数据通常从分析器缓冲区读入字符串对象,然后,字符串对象被推送到客户端缓冲区。 提取模型使客户端能够为分析器提供一个可以将字符串直接写入的缓冲区。 |
有选择地处理 |
推送模型通知客户端每个项,包括属性、处理指令和空白,而提取模型客户端可以跳过项,只处理那些对应用程序有意义的项。 这样可以生成效率极高的应用程序。 而且,可以预先设置影响处理 XML 流的方式(例如标准化)的属性。 |