XmlTextReader 类
定义
重要
一些信息与预发行产品相关,相应产品在发行之前可能会进行重大修改。 对于此处提供的信息,Microsoft 不作任何明示或暗示的担保。
表示提供对 XML 数据的快速、非缓存、仅向前访问的读取器。
建议改用 XmlReader 类。
public ref class XmlTextReader : System::Xml::XmlReader, System::Xml::IXmlLineInfo, System::Xml::IXmlNamespaceResolver
public ref class XmlTextReader : System::Xml::XmlReader, System::Xml::IXmlLineInfo
public class XmlTextReader : System.Xml.XmlReader, System.Xml.IXmlLineInfo, System.Xml.IXmlNamespaceResolver
public class XmlTextReader : System.Xml.XmlReader, System.Xml.IXmlLineInfo
type XmlTextReader = class
inherit XmlReader
interface IXmlLineInfo
interface IXmlNamespaceResolver
type XmlTextReader = class
inherit XmlReader
interface IXmlLineInfo
Public Class XmlTextReader
Inherits XmlReader
Implements IXmlLineInfo, IXmlNamespaceResolver
Public Class XmlTextReader
Inherits XmlReader
Implements IXmlLineInfo
- 继承
- 实现
注解
注释
建议您使用XmlReader方法创建XmlReader.Create实例,以利用新功能。
XmlTextReader 提供对 XML 数据流的仅进只读访问权限。 当前节点是指读取器所在的节点。 读取器使用任何反映当前节点值的读取方法和属性进行推进。
此类实现 XmlReader 并符合 W3C 可扩展标记语言 (XML) 1.0 建议和 XML 中的命名空间建议。
XmlTextReader 提供以下功能:
强制实施格式正确的 XML 规则。
XmlTextReader不提供数据验证。检查
DocumentType节点是否格式完整。XmlTextReader检查 DTD 是否格式良好,但不使用 DTD 进行验证。对于NodeType是
XmlNodeType.EntityReference的节点,将返回一个空的EntityReference节点(即Value属性为String.Empty)。
注释
DTD 中实体的实际声明称为 Entity 节点。 在数据中引用这些节点时,它们称为 EntityReference 节点。
- 不展开默认属性。
由于XmlTextReader不执行数据验证所需的额外检查,它提供了一个快速的格式完整性解析器。
为了验证数据,请使用验证器 XmlReader。
若要从中 XmlDocument读取 XML 数据,请使用 XmlNodeReader。
XmlTextReader 会在发生 XML 分析错误时引发 XmlException。 引发异常后,读取器的状态不可预测。 例如,报告的节点类型可能与当前节点的实际节点类型不同。 使用 ReadState 属性检查读取器是否处于错误状态。
安全注意事项
以下是使用 XmlTextReader 类时要考虑的事项。
由 XmlTextReader 引发的异常可能会泄露您不希望暴露给应用程序的路径信息。 应用程序必须捕获异常并相应地处理它们。
默认情况下,DTD 处理处于启用状态。 如果您担心拒绝服务问题或您在处理不可信的源,请禁用 DTD 处理。 将 DtdProcessing 属性设置为 Prohibit 禁用 DTD 处理。
如果已启用 DTD 处理,则可以用于 ThrowingResolver 限制可以访问的资源 XmlTextReader 。 还可以设计应用程序,使 XML 处理受内存和时间限制。 例如,在 ASP.NET 应用程序中配置超时限制。
XML 数据可以包括对外部资源的引用,例如 DTD 文件。 默认情况下,外部资源是使用 XmlUrlResolver 没有用户凭据的对象解析的。 可以通过执行以下任一操作来进一步增强安全性:
- 使用限制可以访问XmlTextReader的资源ThrowingResolver。
- 不允许 XmlReader 通过设置 XmlResolver 属性为
null来打开任何外部资源。
XML 数据可以包含大量属性、命名空间声明、嵌套元素等,这些属性需要大量时间来处理。 若要限制发送到XmlTextReader的输入大小,请创建一个自定义的 IStream 实现并将其应用于XmlTextReader。
该方法 ReadValueChunk 可用于处理大型数据流。 此方法一次读取少量字符,而不是为整个值分配单个字符串。
默认情况下不展开常规实体。 常规实体在调用 ResolveEntity 方法时展开。
构造函数
属性
| 名称 | 说明 |
|---|---|
| AttributeCount |
获取当前节点上的属性数。 |
| BaseURI |
获取当前节点的基 URI。 |
| CanReadBinaryContent |
获取一个值, XmlTextReader 该值指示是否实现二进制内容读取方法。 |
| CanReadValueChunk |
获取一个值,该值指示是否 XmlTextReader 实现该方法 ReadValueChunk(Char[], Int32, Int32) 。 |
| CanResolveEntity |
获取一个值,该值指示此读取器是否可以分析和解析实体。 |
| CanResolveEntity |
获取一个值,该值指示此读取器是否可以分析和解析实体。 (继承自 XmlReader) |
| Depth |
获取 XML 文档中当前节点的深度。 |
| DtdProcessing |
获取或设置 DtdProcessing 枚举。 |
| Encoding |
获取文档的编码。 |
| EntityHandling |
获取或设置一个值,该值指定读取器如何处理实体。 |
| EOF |
获取一个值,该值指示读取器是否位于流的末尾。 |
| HasAttributes |
获取一个值,该值指示当前节点是否具有任何属性。 (继承自 XmlReader) |
| HasValue |
获取一个值,该值指示当前节点是否可以具有 Value 其他 |
| IsDefault |
获取一个值,该值指示当前节点是从 DTD 或架构中定义的默认值生成的属性。 |
| IsEmptyElement |
获取一个值,该值指示当前节点是否为空元素(例如)。 |
| Item[Int32] |
获取具有指定索引的属性的值。 |
| Item[Int32] |
在派生类中重写时,获取具有指定索引的属性的值。 (继承自 XmlReader) |
| Item[String, String] |
获取具有指定本地名称和命名空间 URI 的属性的值。 |
| Item[String, String] |
在派生类中重写时,获取具有指定 LocalName 属性的值和 NamespaceURI。 (继承自 XmlReader) |
| Item[String] |
获取具有指定名称的属性的值。 |
| Item[String] |
在派生类中重写时,获取具有指定 Name属性的值。 (继承自 XmlReader) |
| LineNumber |
获取当前行号。 |
| LinePosition |
获取当前行位置。 |
| LocalName |
获取当前节点的本地名称。 |
| Name |
获取当前节点的限定名称。 |
| Namespaces |
获取或设置一个值,该值指示是否支持命名空间。 |
| NamespaceURI |
获取命名空间 URI (,如 W3C 命名空间规范) 读取器所在的节点所定义。 |
| NameTable |
获取 XmlNameTable 与此实现关联的值。 |
| NodeType |
获取当前节点的类型。 |
| Normalization |
获取或设置一个值,该值指示是否规范化空格和属性值。 |
| Prefix |
获取与当前节点关联的命名空间前缀。 |
| ProhibitDtd |
已过时.
已过时.
获取或设置一个值,该值指示是否允许 DTD 处理。 此属性已过时。 改用 DtdProcessing。 |
| QuoteChar |
获取用于将属性节点的值括起来的引号字符。 |
| ReadState |
获取读取器的状态。 |
| SchemaInfo |
获取由于架构验证而分配给当前节点的架构信息。 (继承自 XmlReader) |
| Settings |
XmlReaderSettings获取用于创建此XmlTextReader实例的对象。 |
| Settings |
XmlReaderSettings获取用于创建此XmlReader实例的对象。 (继承自 XmlReader) |
| Value |
获取当前节点的文本值。 |
| ValueType |
获取当前节点的公共语言运行时 (CLR) 类型。 (继承自 XmlReader) |
| WhitespaceHandling |
获取或设置一个值,该值指定如何处理空格。 |
| XmlLang |
获取当前 |
| XmlResolver |
XmlResolver设置用于解析 DTD 引用的项。 |
| XmlSpace |
获取当前 |
方法
显式接口实现
| 名称 | 说明 |
|---|---|
| IDisposable.Dispose() |
有关此成员的说明,请参阅 Dispose()。 (继承自 XmlReader) |
| IXmlLineInfo.HasLineInfo() |
有关此成员的说明,请参阅 HasLineInfo()。 |
| IXmlNamespaceResolver.GetNamespacesInScope(XmlNamespaceScope) |
有关此成员的说明,请参阅 GetNamespacesInScope(XmlNamespaceScope)。 |
| IXmlNamespaceResolver.LookupNamespace(String) |
有关此成员的说明,请参阅 LookupNamespace(String)。 |
| IXmlNamespaceResolver.LookupPrefix(String) |
有关此成员的说明,请参阅 LookupPrefix(String)。 |