XmlNodeReader 类

定义

表示提供对 XmlNode 中的 XML 数据进行快速、非缓存的只进访问的读取器。

public ref class XmlNodeReader : System::Xml::XmlReader, System::Xml::IXmlNamespaceResolver
public ref class XmlNodeReader : System::Xml::XmlReader
public class XmlNodeReader : System.Xml.XmlReader, System.Xml.IXmlNamespaceResolver
public class XmlNodeReader : System.Xml.XmlReader
type XmlNodeReader = class
    inherit XmlReader
    interface IXmlNamespaceResolver
type XmlNodeReader = class
    inherit XmlReader
Public Class XmlNodeReader
Inherits XmlReader
Implements IXmlNamespaceResolver
Public Class XmlNodeReader
Inherits XmlReader
继承
XmlNodeReader
实现

示例

在以下示例中,XML 文件加载到 XML 文档中并进行修改。 XML 文档传递给 XmlNodeReader,后者再传递给 XmlReader.Create 方法。 在验证读取器分析文件时,可以验证对 XML 文件所作的任何更改。

using System;
using System.Xml;
using System.Xml.Schema;
using System.IO;

public class Sample {

  public static void Main() {

    // Create and load the XML document.
    XmlDocument doc = new XmlDocument();
    doc.Load("booksSchema.xml");

    // Make changes to the document.
    XmlElement book = (XmlElement) doc.DocumentElement.FirstChild;
    book.SetAttribute("publisher", "Worldwide Publishing");

    // Create an XmlNodeReader using the XML document.
    XmlNodeReader nodeReader = new XmlNodeReader(doc);

    // Set the validation settings on the XmlReaderSettings object.
    XmlReaderSettings settings = new XmlReaderSettings();
    settings.ValidationType = ValidationType.Schema;
    settings.Schemas.Add("urn:bookstore-schema", "books.xsd");
    settings.ValidationEventHandler += new ValidationEventHandler (ValidationCallBack);

   // Create a validating reader that wraps the XmlNodeReader object.
   XmlReader reader = XmlReader.Create(nodeReader, settings);

   // Parse the XML file.
   while (reader.Read());
  }

  // Display any validation errors.
  private static void ValidationCallBack(object sender, ValidationEventArgs e) {
    Console.WriteLine("Validation Error: {0}", e.Message);
  }
}
Imports System.Xml
Imports System.Xml.Schema
Imports System.IO

public class Sample 

  public shared sub Main() 

    ' Create and load the XML document.
    Dim doc as XmlDocument = new XmlDocument()
    doc.Load("booksSchema.xml")

    ' Make changes to the document.
    Dim book as XmlElement
    book = CType(doc.DocumentElement.FirstChild, XmlElement)
    book.SetAttribute("publisher", "Worldwide Publishing")

    ' Create an XmlNodeReader using the XML document.
    Dim nodeReader as XmlNodeReader = new XmlNodeReader(doc)

    ' Set the validation settings on the XmlReaderSettings object.
    Dim settings as XmlReaderSettings = new XmlReaderSettings()
    settings.ValidationType = ValidationType.Schema
    settings.Schemas.Add("urn:bookstore-schema", "books.xsd")
    AddHandler settings.ValidationEventHandler, AddressOf ValidationCallBack

    ' Create a validating reader that wraps the XmlNodeReader object.
    Dim reader as XmlReader = XmlReader.Create(nodeReader,settings)
    
    ' Parse the XML file.
    while (reader.Read())
    end while
  end sub

  ' Display any validation errors.
  private shared sub ValidationCallBack(sender as object, e as ValidationEventArgs)
    Console.WriteLine("Validation Error: {0}", e.Message)
  end sub

end class

以下两个 XML 文件用作输入。

<?xml version='1.0'?>
<bookstore xmlns="urn:bookstore-schema">
  <book genre="autobiography">
    <title>The Autobiography of Benjamin Franklin</title>
    <author>
      <first-name>Benjamin</first-name>
      <last-name>Franklin</last-name>
    </author>
    <price>8.99</price>
  </book>
  <book genre="novel">
    <title>The Confidence Man</title>
    <author>
      <first-name>Herman</first-name>
      <last-name>Melville</last-name>
    </author>
    <price>11.99</price>
  </book>
</bookstore>
<xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema"
    xmlns="urn:bookstore-schema"
    elementFormDefault="qualified"
    targetNamespace="urn:bookstore-schema">

 <xsd:element name="bookstore" type="bookstoreType"/>

 <xsd:complexType name="bookstoreType">
  <xsd:sequence maxOccurs="unbounded">
   <xsd:element name="book"  type="bookType"/>
  </xsd:sequence>
 </xsd:complexType>

 <xsd:complexType name="bookType">
  <xsd:sequence>
   <xsd:element name="title" type="xsd:string"/>
   <xsd:element name="author" type="authorName"/>
   <xsd:element name="price"  type="xsd:decimal"/>
  </xsd:sequence>
  <xsd:attribute name="genre" type="xsd:string"/>
 </xsd:complexType>

 <xsd:complexType name="authorName">
  <xsd:sequence>
   <xsd:element name="first-name"  type="xsd:string"/>
   <xsd:element name="last-name" type="xsd:string"/>
  </xsd:sequence>
 </xsd:complexType>

</xsd:schema>

输出:

验证错误:未声明“publisher”属性。

注解

注意

建议使用 类和 方法创建XmlReader实例,而不是使用 。XmlNodeReaderXmlReaderSettingsCreate 这使你能够利用符合性检查和符合 XML 1.0 建议。

XmlNodeReader能够读取 XML DOM 子树。 此类不支持文档类型定义 (DTD) 或架构验证。 但是,可以创建一个 XmlReader 环绕 XmlNodeReader 对象的对象,以验证存储在对象中的数据 XmlNodeReader ,如示例部分所示。

构造函数

XmlNodeReader(XmlNode)

使用指定的 XmlNode 创建 XmlNodeReader 类的实例。

属性

AttributeCount

获取当前节点上的属性数目。

BaseURI

获取当前节点的基 URI。

CanReadBinaryContent

获取一个值,该值指示 XmlNodeReader 是否实现二进制内容读取方法。

CanReadBinaryContent

获取一个值,该值指示 XmlReader 是否实现二进制内容读取方法。

(继承自 XmlReader)
CanReadValueChunk

获取一个值,该值指示 XmlReader 是否实现 ReadValueChunk(Char[], Int32, Int32) 方法。

(继承自 XmlReader)
CanResolveEntity

获取一个值,该值指示此读取器是否可以分析和解析实体。

Depth

获取 XML 文档中当前节点的深度。

EOF

获取一个值,该值指示读取器是否定位在流结尾。

HasAttributes

获取一个值,该值指示当前节点是否有任何属性。

HasValue

获取一个值,该值指示当前节点是否可以具有 Value

IsDefault

获取一个值,该值指示当前节点是否是从文档类型定义 (DTD) 或架构中定义的默认值生成的属性。

IsEmptyElement

获取一个值,该值指示当前节点是否为空元素, (例如 <MyElement/> ,) 。

Item[Int32]

获取具有指定索引的属性的值。

Item[Int32]

当在派生类中被重写时,获取具有指定索引的属性的值。

(继承自 XmlReader)
Item[String, String]

获取具有指定本地名称和命名空间 URI 的属性的值。

Item[String, String]

当在派生类中被重写时,获取具有指定 LocalNameNamespaceURI 的属性的值。

(继承自 XmlReader)
Item[String]

当在派生类中被重写时,获取具有指定名称的属性的值。

Item[String]

当在派生类中被重写时,获取具有指定 Name 的属性的值。

(继承自 XmlReader)
LocalName

获取当前节点的本地名称。

Name

获取当前节点的限定名称。

NamespaceURI

获取读取器定位在的节点的命名空间 URI(采用 W3C 命名空间规范中定义)。

NameTable

获取与此实现关联的 XmlNameTable

NodeType

获取当前节点的类型。

Prefix

获取与当前节点关联的命名空间前缀。

QuoteChar

获取用于括起属性节点的值的引号字符。

QuoteChar

当在派生类中被重写时,获取用于括住特性节点值的引号字符。

(继承自 XmlReader)
ReadState

获取读取器的状态。

SchemaInfo

获取已分配给当前节点的架构信息。

SchemaInfo

获取作为架构验证结果分配给当前节点的架构信息。

(继承自 XmlReader)
Settings

获取用于创建此 XmlReader 实例的 XmlReaderSettings 对象。

(继承自 XmlReader)
Value

获取当前节点的文本值。

ValueType

获取当前节点的公共语言运行时 (CLR) 类型。

(继承自 XmlReader)
XmlLang

获取当前 xml:lang 范围。

XmlSpace

获取当前 xml:space 范围。

方法

Close()

ReadState 改为 Closed

Dispose()

释放 XmlReader 类的当前实例所使用的所有资源。

(继承自 XmlReader)
Dispose(Boolean)

释放由 XmlReader 占用的非托管资源,还可以另外再释放托管资源。

(继承自 XmlReader)
Equals(Object)

确定指定对象是否等于当前对象。

(继承自 Object)
GetAttribute(Int32)

获取具有指定索引的属性的值。

GetAttribute(String)

获取具有指定名称的属性的值。

GetAttribute(String, String)

获取具有指定本地名称和命名空间 URI 的属性的值。

GetHashCode()

作为默认哈希函数。

(继承自 Object)
GetType()

获取当前实例的 Type

(继承自 Object)
GetValueAsync()

异步获取当前节点的值。

(继承自 XmlReader)
IsStartElement()

调用 MoveToContent() 并测试当前内容节点是否是开始标记或空元素标记。

(继承自 XmlReader)
IsStartElement(String)

调用 MoveToContent() 并测试当前内容节点是否是开始标记或空元素标记,以及所找到元素的 Name 属性是否与给定的参数匹配。

(继承自 XmlReader)
IsStartElement(String, String)

调用 MoveToContent() 并测试当前内容节点是否是开始标记或空元素标记,以及所找到元素的 LocalNameNamespaceURI 属性是否与给定的字符串匹配。

(继承自 XmlReader)
LookupNamespace(String)

解析当前元素的范围内的命名空间前缀。

MemberwiseClone()

创建当前 Object 的浅表副本。

(继承自 Object)
MoveToAttribute(Int32)

移动到具有指定索引的属性。

MoveToAttribute(String)

移动到具有指定名称的属性。

MoveToAttribute(String, String)

移动到具有指定本地名称和命名空间 URI 的属性。

MoveToContent()

检查当前节点是否是内容(非空白文本、CDATAElementEndElementEntityReferenceEndEntity)节点。 如果此节点不是内容节点,则读取器向前跳至下一个内容节点或文件结尾。 它跳过以下类型的节点:ProcessingInstructionDocumentTypeCommentWhitespaceSignificantWhitespace

(继承自 XmlReader)
MoveToContentAsync()

异步检查当前节点是否为内容节点。 如果此节点不是内容节点,则读取器向前跳至下一个内容节点或文件结尾。

(继承自 XmlReader)
MoveToElement()

移动到包含当前属性节点的元素。

MoveToFirstAttribute()

移动到第一个属性。

MoveToNextAttribute()

移动到下一个属性。

Read()

从流中读取下一个节点。

ReadAsync()

异步读取该流的下一个节点。

(继承自 XmlReader)
ReadAttributeValue()

将属性值分析为一个或多个 TextEntityReferenceEndEntity 节点。

ReadContentAs(Type, IXmlNamespaceResolver)

将内容作为指定类型的对象读取。

(继承自 XmlReader)
ReadContentAsAsync(Type, IXmlNamespaceResolver)

将内容作为指定类型的对象异步读取。

(继承自 XmlReader)
ReadContentAsBase64(Byte[], Int32, Int32)

读取内容并返回 Base64 解码的二进制字节。

ReadContentAsBase64(Byte[], Int32, Int32)

读取内容并返回 Base64 解码的二进制字节。

(继承自 XmlReader)
ReadContentAsBase64Async(Byte[], Int32, Int32)

异步读取内容并返回 Base64 解码的二进制字节。

(继承自 XmlReader)
ReadContentAsBinHex(Byte[], Int32, Int32)

读取内容并返回 BinHex 解码的二进制字节。

ReadContentAsBinHex(Byte[], Int32, Int32)

读取内容并返回 BinHex 解码的二进制字节。

(继承自 XmlReader)
ReadContentAsBinHexAsync(Byte[], Int32, Int32)

异步读取内容并返回 BinHex 解码的二进制字节。

(继承自 XmlReader)
ReadContentAsBoolean()

将当前位置的文本内容作为 Boolean 读取。

(继承自 XmlReader)
ReadContentAsDateTime()

将当前位置的文本内容作为 DateTime 对象读取。

(继承自 XmlReader)
ReadContentAsDateTimeOffset()

将当前位置的文本内容作为 DateTimeOffset 对象读取。

(继承自 XmlReader)
ReadContentAsDecimal()

将当前位置的文本内容作为 Decimal 对象读取。

(继承自 XmlReader)
ReadContentAsDouble()

将当前位置的文本内容作为双精度浮点数读取。

(继承自 XmlReader)
ReadContentAsFloat()

将当前位置的文本内容作为单精度浮点数读取。

(继承自 XmlReader)
ReadContentAsInt()

将当前位置的文本内容作为 32 位有符号整数读取。

(继承自 XmlReader)
ReadContentAsLong()

将当前位置的文本内容作为 64 位有符号整数读取。

(继承自 XmlReader)
ReadContentAsObject()

将当前位置的文本内容作为 Object 读取。

(继承自 XmlReader)
ReadContentAsObjectAsync()

将当前位置的文本内容作为 Object 对象异步读取。

(继承自 XmlReader)
ReadContentAsString()

将当前位置的文本内容作为 String 对象读取。

(继承自 XmlReader)
ReadContentAsStringAsync()

将当前位置的文本内容作为 String 对象异步读取。

(继承自 XmlReader)
ReadElementContentAs(Type, IXmlNamespaceResolver)

将元素内容作为请求类型读取。

(继承自 XmlReader)
ReadElementContentAs(Type, IXmlNamespaceResolver, String, String)

检查指定的本地名称和命名空间 URI 与当前元素的本地名称和命名空间 URI 是否匹配,然后将元素内容作为请求类型读取。

(继承自 XmlReader)
ReadElementContentAsAsync(Type, IXmlNamespaceResolver)

将元素内容作为请求类型异步读取。

(继承自 XmlReader)
ReadElementContentAsBase64(Byte[], Int32, Int32)

读取元素并对 Base64 内容进行解码。

ReadElementContentAsBase64(Byte[], Int32, Int32)

读取元素并对 Base64 内容进行解码。

(继承自 XmlReader)
ReadElementContentAsBase64Async(Byte[], Int32, Int32)

异步读取元素并对 Base64 内容进行解码。

(继承自 XmlReader)
ReadElementContentAsBinHex(Byte[], Int32, Int32)

读取元素并对 BinHex 内容进行解码。

ReadElementContentAsBinHex(Byte[], Int32, Int32)

读取元素并对 BinHex 内容进行解码。

(继承自 XmlReader)
ReadElementContentAsBinHexAsync(Byte[], Int32, Int32)

异步读取元素并对 BinHex 内容进行解码。

(继承自 XmlReader)
ReadElementContentAsBoolean()

读取当前元素并将内容作为 Boolean 对象返回。

(继承自 XmlReader)
ReadElementContentAsBoolean(String, String)

检查指定的本地名称和命名空间 URI 与当前元素的本地名称和命名空间 URI 是否匹配,然后读取当前元素,并将内容作为 Boolean 对象返回。

(继承自 XmlReader)
ReadElementContentAsDateTime()

读取当前元素并将内容作为 DateTime 对象返回。

(继承自 XmlReader)
ReadElementContentAsDateTime(String, String)

检查指定的本地名称和命名空间 URI 与当前元素的本地名称和命名空间 URI 是否匹配,然后读取当前元素,并将内容作为 DateTime 对象返回。

(继承自 XmlReader)
ReadElementContentAsDecimal()

读取当前元素并将内容作为 Decimal 对象返回。

(继承自 XmlReader)
ReadElementContentAsDecimal(String, String)

检查指定的本地名称和命名空间 URI 与当前元素的本地名称和命名空间 URI 是否匹配,然后读取当前元素,并将内容作为 Decimal 对象返回。

(继承自 XmlReader)
ReadElementContentAsDouble()

读取当前元素并将内容作为双精度浮点数返回。

(继承自 XmlReader)
ReadElementContentAsDouble(String, String)

检查指定的本地名称和命名空间 URI 与当前元素的本地名称和命名空间 URI 是否匹配,然后读取当前元素,并将内容作为双精度浮点数返回。

(继承自 XmlReader)
ReadElementContentAsFloat()

读取当前元素并将内容作为单精度浮点数返回。

(继承自 XmlReader)
ReadElementContentAsFloat(String, String)

检查指定的本地名称和命名空间 URI 与当前元素的本地名称和命名空间 URI 是否匹配,然后读取当前元素,并将内容作为单精度浮点数返回。

(继承自 XmlReader)
ReadElementContentAsInt()

读取当前元素并将内容作为 32 位有符号整数返回。

(继承自 XmlReader)
ReadElementContentAsInt(String, String)

检查指定的本地名称和命名空间 URI 与当前元素的本地名称和命名空间 URI 是否匹配,然后读取当前元素,并将内容作为 32 位有符号整数返回。

(继承自 XmlReader)
ReadElementContentAsLong()

读取当前元素并将内容作为 64 位有符号整数返回。

(继承自 XmlReader)
ReadElementContentAsLong(String, String)

检查指定的本地名称和命名空间 URI 与当前元素的本地名称和命名空间 URI 是否匹配,然后读取当前元素,并将内容作为 64 位有符号整数返回。

(继承自 XmlReader)
ReadElementContentAsObject()

读取当前元素并将内容作为 Object 返回。

(继承自 XmlReader)
ReadElementContentAsObject(String, String)

检查指定的本地名称和命名空间 URI 与当前元素的本地名称和命名空间 URI 是否匹配,然后读取当前元素,并将内容作为 Object 返回。

(继承自 XmlReader)
ReadElementContentAsObjectAsync()

异步读取当前元素并将内容作为 Object 返回。

(继承自 XmlReader)
ReadElementContentAsString()

读取当前元素并将内容作为 String 对象返回。

(继承自 XmlReader)
ReadElementContentAsString(String, String)

检查指定的本地名称和命名空间 URI 与当前元素的本地名称和命名空间 URI 是否匹配,然后读取当前元素,并将内容作为 String 对象返回。

(继承自 XmlReader)
ReadElementContentAsStringAsync()

异步读取当前元素并将内容作为 String 对象返回。

(继承自 XmlReader)
ReadElementString()

读取纯文本元素。 但是,建议改用 ReadElementContentAsString() 方法,因为该方法可以更直接地处理此操作。

(继承自 XmlReader)
ReadElementString(String)

在读取纯文本元素之前,检查所找到元素的 Name 属性是否与给定的字符串匹配。 但是,建议改用 ReadElementContentAsString() 方法,因为该方法可以更直接地处理此操作。

(继承自 XmlReader)
ReadElementString(String, String)

在读取纯文本元素之前,检查所找到元素的 LocalNameNamespaceURI 属性是否与给定的字符串匹配。 但是,建议改用 ReadElementContentAsString(String, String) 方法,因为该方法可以更直接地处理此操作。

(继承自 XmlReader)
ReadEndElement()

检查当前内容节点是否为结束标记并将读取器推进到下一个节点。

(继承自 XmlReader)
ReadInnerXml()

当在派生类中被重写时,将所有内容(包括标记)当做字符串读取。

(继承自 XmlReader)
ReadInnerXmlAsync()

异步读取所有内容,包括作为字符串的标记。

(继承自 XmlReader)
ReadOuterXml()

当在派生类中被重写时,读取表示该节点和所有它的子级的内容(包括标记)。

(继承自 XmlReader)
ReadOuterXmlAsync()

异步读取包含该节点和所有它的子级的内容(包括标记)。

(继承自 XmlReader)
ReadStartElement()

检查当前节点是否为元素并将读取器推进到下一个节点。

(继承自 XmlReader)
ReadStartElement(String)

检查当前内容节点是否为具有给定 Name 的元素并将读取器推进到下一个节点。

(继承自 XmlReader)
ReadStartElement(String, String)

检查当前内容节点是否为具有给定 LocalNameNamespaceURI 的元素并将读取器推进到下一个节点。

(继承自 XmlReader)
ReadString()

将元素或文本节点的内容读取为一个字符串。

ReadSubtree()

返回新的 XmlReader 实例,此实例可用于读取当前节点及其所有子节点。

(继承自 XmlReader)
ReadToDescendant(String)

XmlReader 前进到下一个具有指定限定名的子代元素。

(继承自 XmlReader)
ReadToDescendant(String, String)

XmlReader 前进到下一个具有指定的本地名称和命名空间 URI 的子代元素。

(继承自 XmlReader)
ReadToFollowing(String)

一直读取,直到找到具有指定限定名的元素。

(继承自 XmlReader)
ReadToFollowing(String, String)

一直读取,直到找到具有指定的本地名称和命名空间 URI 的元素。

(继承自 XmlReader)
ReadToNextSibling(String)

XmlReader 前进到下一个具有指定限定名的同级元素。

(继承自 XmlReader)
ReadToNextSibling(String, String)

XmlReader 推进到具有指定的本地名称和命名空间 URI 的下一个同级元素。

(继承自 XmlReader)
ReadValueChunk(Char[], Int32, Int32)

读取嵌入在 XML 文档中的大量文本流。

(继承自 XmlReader)
ReadValueChunkAsync(Char[], Int32, Int32)

异步读取嵌入在 XML 文档中的大量文本流。

(继承自 XmlReader)
ResolveEntity()

解析 EntityReference 节点的实体引用。

Skip()

跳过当前节点的子级。

SkipAsync()

异步跳过当前节点的子级。

(继承自 XmlReader)
ToString()

返回表示当前对象的字符串。

(继承自 Object)

显式接口实现

IDisposable.Dispose()

有关此成员的说明,请参见 Dispose()

(继承自 XmlReader)
IXmlNamespaceResolver.GetNamespacesInScope(XmlNamespaceScope)

有关此成员的说明,请参见 GetNamespacesInScope(XmlNamespaceScope)

IXmlNamespaceResolver.LookupNamespace(String)

有关此成员的说明,请参见 LookupNamespace(String)

IXmlNamespaceResolver.LookupPrefix(String)

有关此成员的说明,请参见 LookupPrefix(String)

适用于