使用 XmlTextReader 读取 XML 数据

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)的编码。

请参见

概念

用 XmlReader 读取 XML

其他资源

使用 XmlReader 类