XmlNodeReader 類別

定義

代表一種讀取器,提供快速且非快取的 XML 資料 XmlNode存取。

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」屬性。

備註

Note

我們建議你不要使用 XmlNodeReader,而是使用 類別XmlReaderXmlReaderSettings方法來建立Create實例。 這使您能利用符合性檢查及符合 XML 1.0 建議的服務。

XmlNodeReader 能讀取 XML DOM 子樹。 此類別不支援文件類型定義(DTD)或結構驗證。 不過,你可以建立 XmlReader 一個包裹物件 XmlNodeReader 的物件,以驗證物件中儲存 XmlNodeReader 的資料,如範例章節所示。

建構函式

名稱 Description
XmlNodeReader(XmlNode)

使用指定的 XmlNodeReader建立該類別的實例XmlNode

屬性

名稱 Description
AttributeCount

取得目前節點上的屬性數量。

BaseURI

取得目前節點的基礎 URI。

CanReadBinaryContent

會有一個值,表示是否 XmlNodeReader 實作了二進位內容讀取方法。

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

取得已指派給目前節點的結構資訊。

Settings

取得 XmlReaderSettings 用來建立此 XmlReader 實例的物件。

(繼承來源 XmlReader)
Value

取得當前節點的文字值。

ValueType

取得目前節點的共通語言執行時(CLR)型別。

(繼承來源 XmlReader)
XmlLang

取得目前的 xml:lang 瞄準鏡。

XmlSpace

取得目前的 xml:space 瞄準鏡。

方法

名稱 Description
Close()

將 變更為 ReadStateClosed

Dispose()

釋放目前類別實例 XmlReader 所使用的所有資源。

(繼承來源 XmlReader)
Dispose(Boolean)

釋放 未管理的資源, XmlReader 並可選擇性地釋放受管理資源。

(繼承來源 XmlReader)
Equals(Object)

判斷指定的物件是否等於目前的物件。

(繼承來源 Object)
GetAttribute(Int32)

取得帶有指定索引的屬性值。

GetAttribute(String, String)

取得具有指定本地名稱與命名空間 URI 的屬性值。

GetAttribute(String)

取得指定名稱屬性的值。

GetHashCode()

做為預設哈希函式。

(繼承來源 Object)
GetType()

取得目前實例的 Type

(繼承來源 Object)
GetValueAsync()

非同步取得目前節點的值。

(繼承來源 XmlReader)
IsStartElement()

呼叫 MoveToContent() 並測試目前的內容節點是起始標籤還是空元素標籤。

(繼承來源 XmlReader)
IsStartElement(String, String)

呼叫MoveToContent()並測試目前的內容節點是起始標籤還是空元素標籤,以及所找到元素的 and LocalName 屬性是否NamespaceURI與給定字串相符。

(繼承來源 XmlReader)
IsStartElement(String)

呼叫 MoveToContent() 並測試目前的內容節點是起始標籤還是空元素標籤,以及所找到元素的屬性是否 Name 符合給定參數。

(繼承來源 XmlReader)
LookupNamespace(String)

解析當前元素作用域中的命名空間前綴。

MemberwiseClone()

建立目前 Object的淺層複本。

(繼承來源 Object)
MoveToAttribute(Int32)

移動到指定索引的屬性。

MoveToAttribute(String, String)

移至指定本地名稱與命名空間 URI 的屬性。

MoveToAttribute(String)

移到指定名稱的屬性。

MoveToContent()

檢查目前節點是否為內容節點(非空白文字、CDATAElementEndElementEntityReferenceEndEntity)節點。 若該節點不是內容節點,讀取器會跳到下一個內容節點或檔案的結尾。 它會跳過以下類型的節點:ProcessingInstructionDocumentTypeCommentWhitespace或。SignificantWhitespace

(繼承來源 XmlReader)
MoveToContentAsync()

非同步檢查目前節點是否為內容節點。 若該節點不是內容節點,讀取器會跳到下一個內容節點或檔案的結尾。

(繼承來源 XmlReader)
MoveToElement()

移動到包含當前屬性節點的元素。

MoveToFirstAttribute()

移到第一個屬性。

MoveToNextAttribute()

進入下一個屬性。

Read()

讀取串流中的下一個節點。

ReadAsync()

非同步地從串流讀取下一個節點。

(繼承來源 XmlReader)
ReadAttributeValue()

將屬性值解析成一個或多個 TextEntityReferenceEndEntity 節點。

ReadContentAs(Type, IXmlNamespaceResolver)

將內容讀取為指定類型的物件。

(繼承來源 XmlReader)
ReadContentAsAsync(Type, IXmlNamespaceResolver)

非同步讀取內容,作為指定類型的物件。

(繼承來源 XmlReader)
ReadContentAsBase64(Byte[], Int32, Int32)

讀取內容並回傳 Base64 解碼後的二進位位元組。

ReadContentAsBase64Async(Byte[], Int32, Int32)

非同步讀取內容並回傳 Base64 解碼後的二進位位元組。

(繼承來源 XmlReader)
ReadContentAsBinHex(Byte[], Int32, Int32)

讀取內容並回傳 BinHex 解碼後的二進位位元組。

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, String, String)

檢查指定的本地名稱與命名空間 URI 是否與當前元素相符,然後將元素內容讀取為請求的類型。

(繼承來源 XmlReader)
ReadElementContentAs(Type, IXmlNamespaceResolver)

讀取元素內容為請求的類型。

(繼承來源 XmlReader)
ReadElementContentAsAsync(Type, IXmlNamespaceResolver)

非同步讀取元素內容,視為請求的類型。

(繼承來源 XmlReader)
ReadElementContentAsBase64(Byte[], Int32, Int32)

讀取元素並解碼 Base64 內容。

ReadElementContentAsBase64Async(Byte[], Int32, Int32)

非同步讀取元素並解碼內容 Base64

(繼承來源 XmlReader)
ReadElementContentAsBinHex(Byte[], Int32, Int32)

讀取元素並解碼 BinHex 內容。

ReadElementContentAsBinHexAsync(Byte[], Int32, Int32)

非同步讀取元素並解碼內容 BinHex

(繼承來源 XmlReader)
ReadElementContentAsBoolean()

讀取目前元素,並將內容以 Boolean 物件形式回傳。

(繼承來源 XmlReader)
ReadElementContentAsBoolean(String, String)

檢查指定的本地名稱與命名空間 URI 是否與當前元素相符,然後讀取該當前元素並將內容作為 Boolean 物件回傳。

(繼承來源 XmlReader)
ReadElementContentAsDateTime()

讀取目前元素,並將內容以 DateTime 物件形式回傳。

(繼承來源 XmlReader)
ReadElementContentAsDateTime(String, String)

檢查指定的本地名稱與命名空間 URI 是否與當前元素相符,然後讀取該當前元素並將內容作為 DateTime 物件回傳。

(繼承來源 XmlReader)
ReadElementContentAsDecimal()

讀取目前元素,並將內容以 Decimal 物件形式回傳。

(繼承來源 XmlReader)
ReadElementContentAsDecimal(String, String)

檢查指定的本地名稱與命名空間 URI 是否與當前元素相符,然後讀取該當前元素並將內容作為 Decimal 物件回傳。

(繼承來源 XmlReader)
ReadElementContentAsDouble()

讀取當前元素,並以雙精度浮點數回傳內容。

(繼承來源 XmlReader)
ReadElementContentAsDouble(String, String)

檢查指定的本地名稱與命名空間 URI 是否與當前元素相符,然後讀取當前元素,並以雙精度浮點數回傳內容。

(繼承來源 XmlReader)
ReadElementContentAsFloat()

讀取當前元素,並以單精度浮點數回傳內容。

(繼承來源 XmlReader)
ReadElementContentAsFloat(String, String)

檢查指定的本地名稱與命名空間 URI 是否與當前元素相符,然後讀取當前元素,並以單精度浮點數回傳內容。

(繼承來源 XmlReader)
ReadElementContentAsInt()

讀取當前元素,並以 32 位元有符號整數回傳內容。

(繼承來源 XmlReader)
ReadElementContentAsInt(String, String)

檢查指定的本地名稱與命名空間 URI 是否與當前元素相符,然後讀取該當前元素,並以 32 位元有符號整數回傳內容。

(繼承來源 XmlReader)
ReadElementContentAsLong()

讀取當前元素,並以 64 位元有符號整數回傳內容。

(繼承來源 XmlReader)
ReadElementContentAsLong(String, String)

檢查指定的本地名稱與命名空間 URI 是否與當前元素相符,然後讀取當前元素,並以 64 位元有符號整數的形式回傳內容。

(繼承來源 XmlReader)
ReadElementContentAsObject()

讀取當前元素並以 Object.

(繼承來源 XmlReader)
ReadElementContentAsObject(String, String)

檢查指定的本地名稱與命名空間 URI 是否與當前元素相符,然後讀取當前元素並將內容 Object以 .

(繼承來源 XmlReader)
ReadElementContentAsObjectAsync()

非同步讀取目前元素,並將內容返回為 Object

(繼承來源 XmlReader)
ReadElementContentAsString()

讀取目前元素,並將內容以 String 物件形式回傳。

(繼承來源 XmlReader)
ReadElementContentAsString(String, String)

檢查指定的本地名稱與命名空間 URI 是否與當前元素相符,然後讀取該當前元素並將內容作為 String 物件回傳。

(繼承來源 XmlReader)
ReadElementContentAsStringAsync()

非同步讀取目前元素,並將內容 String 以物件形式回傳。

(繼承來源 XmlReader)
ReadElementString()

讀取純文字元素。 不過,我們建議你改用這個 ReadElementContentAsString() 方法,因為它提供了更直接處理此操作的方法。

(繼承來源 XmlReader)
ReadElementString(String, String)

在讀取純文字元素前,檢查所找到元素的 和 LocalName 屬性是否NamespaceURI與給定字串相符。 不過,我們建議你改用這個 ReadElementContentAsString(String, String) 方法,因為它提供了更直接處理此操作的方法。

(繼承來源 XmlReader)
ReadElementString(String)

在讀取純文字元素前,檢查所找到元素的屬性是否 Name 與給定字串相符。 不過,我們建議你改用這個 ReadElementContentAsString() 方法,因為它提供了更直接處理此操作的方法。

(繼承來源 XmlReader)
ReadEndElement()

檢查目前的內容節點是否為終點標籤,並將讀取器推進至下一個節點。

(繼承來源 XmlReader)
ReadInnerXml()

當在派生類別中覆寫時,會將所有內容(包括標記)讀取為字串。

(繼承來源 XmlReader)
ReadInnerXmlAsync()

非同步讀取所有內容,包括標記,以字串形式呈現。

(繼承來源 XmlReader)
ReadOuterXml()

當在衍生類別中覆寫時,會讀取代表該節點及其所有子節點的內容,包括標記。

(繼承來源 XmlReader)
ReadOuterXmlAsync()

非同步讀取代表該節點及其所有子節點的內容,包括標記。

(繼承來源 XmlReader)
ReadStartElement()

檢查當前節點是否為元素,並將讀取器推進至下一個節點。

(繼承來源 XmlReader)
ReadStartElement(String, String)

檢查當前內容節點是否為元素,且為給定 LocalNameNamespaceURI 並將讀取器推進至下一個節點。

(繼承來源 XmlReader)
ReadStartElement(String)

檢查當前內容節點是否為與給定 Name 元素的元素,並將讀取器推進至下一個節點。

(繼承來源 XmlReader)
ReadString()

將元素或文字節點的內容讀取為字串。

ReadSubtree()

回傳一個新 XmlReader 實例,可用來讀取目前節點及其所有後代節點。

(繼承來源 XmlReader)
ReadToDescendant(String, String)

將 推進 XmlReader 到下一個具有指定本地名稱與命名空間 URI 的後代元素。

(繼承來源 XmlReader)
ReadToDescendant(String)

將該 XmlReader 元素推進至指定限定名稱的下一個後裔元素。

(繼承來源 XmlReader)
ReadToFollowing(String, String)

讀取直到找到具有指定本地名稱與命名空間 URI 的元素。

(繼承來源 XmlReader)
ReadToFollowing(String)

讀取直到找到具有指定限定名稱的元素為止。

(繼承來源 XmlReader)
ReadToNextSibling(String, String)

XmlReader 推進到下一個具有指定本地名稱與命名空間 URI 的兄弟元素。

(繼承來源 XmlReader)
ReadToNextSibling(String)

XmlReader 推進到具有指定限定名稱的下一個兄弟元素。

(繼承來源 XmlReader)
ReadValueChunk(Char[], Int32, Int32)

讀取嵌入 XML 文件中的大量文字流。

(繼承來源 XmlReader)
ReadValueChunkAsync(Char[], Int32, Int32)

非同步讀取嵌入 XML 文件中的大量文字串流。

(繼承來源 XmlReader)
ResolveEntity()

解析節點的 EntityReference 實體參考。

Skip()

跳過目前節點的子節點。

SkipAsync()

非同步跳過目前節點的子節點。

(繼承來源 XmlReader)
ToString()

傳回表示目前 物件的字串。

(繼承來源 Object)

明確介面實作

名稱 Description
IDisposable.Dispose()

關於此成員的描述,請參見 Dispose()

(繼承來源 XmlReader)
IXmlNamespaceResolver.GetNamespacesInScope(XmlNamespaceScope)

關於此成員的描述,請參見 GetNamespacesInScope(XmlNamespaceScope)

IXmlNamespaceResolver.LookupNamespace(String)

關於此成員的描述,請參見 LookupNamespace(String)

IXmlNamespaceResolver.LookupPrefix(String)

關於此成員的描述,請參見 LookupPrefix(String)

適用於