使用 XmlTextReader 读取 XML 数据
更新:November 2007
XmlTextReader 类是 XmlReader 的实现,为 XML 文本提供分析器。 它强制 XML 必须执行正确格式的规则。 该分析器既不是验证分析器,也不是非验证分析器,因为它不使用文档类型定义 (DTD) 或架构信息。 它可以读取块中的文本或从流中读取字符。
说明: |
---|
在 .NET Framework 2.0 版 中,建议的做法是使用 XmlReaderSettings 类和 Create 方法创建 XmlReader 实例。 这样可以充分利用 .NET Framework 2.0 中引入的所有新功能。 有关更多信息,请参见创建 XML 读取器。 |
概述
XmlTextReader 提供下列功能:
强制 XML 必须采用正确格式的规则。
检查 DTD 的格式是否正确。 然而,并不将 DTD 用于验证或添加默认属性。 如果 EntityHandling 属性设置为 ExpandEntities,或在 EntityReference 节点上调用 ResolveEntity 方法,DTD 将用于实体扩展。
如果 EntityHandling 属性设置为 ExpandCharEntities(默认设置),未扩展的实体引用将作为 EntityReference 节点返回。 如果 DTD 中未定义该实体引用,读取器不会出错,除非在该节点上调用了 ResolveEntity 方法。
提供关闭对新行和属性值进行 XML 标准化的选项。 标准化在默认情况下关闭。
不针对 DTD 或架构进行验证。
提供快速的 XML 分析器,原因是 XmlTextReader 没有涉及验证检查的系统开销。
XmlTextReader 可以从不同输入(如流对象、TextReader 以及标识本地文件位置或网站的 URL)读取数据。
XmlTextReader 使用 XmlResolver 定位外部资源(如 DTD),所以它可以检查 DTD 以查看格式是否正确。 有关 XmlResolver 的更多信息,请参见使用 XmlResolver 解析资源。
编码声明 <?xml version="1.0" encoding="ISO-8859-5"?> 包含设置文档编码的 encoding 属性。XmlTextReader 有一个 Encoding 属性,该属性返回在 XML 声明的 encoding 属性中找到的字符编码。 如果未找到 encoding 属性,根据流的前两个字节,文档的默认编码设置为 UTF-8 或 UTF-16。
如果读取了外部资源(例如用于扩展实体引用或架构文件的 DTD),则编码将设置为在外部引用中找到的编码值。 如果在外部引用中没有找到编码,则默认值设置为 UTF-8 或 UTF-16。XmlTextReader 支持许多编码,这是由于它使用 Encoding 类。 因此,该类支持的所有编码也受 XmlTextReader 支持。 唯一不支持的编码是将 <?xml 序列映射到 UTF-8 以外的其他字节值(如 UTF-7 和 EBCDIC)的编码。