XmlNodeReader 類別
定義
重要
部分資訊涉及發行前產品,在發行之前可能會有大幅修改。 Microsoft 對此處提供的資訊,不做任何明確或隱含的瑕疵擔保。
代表一種讀取器,提供快速且非快取的 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
- 繼承
- 實作
範例
在以下範例中,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,而是使用 類別XmlReader和XmlReaderSettings方法來建立Create實例。 這使您能利用符合性檢查及符合 XML 1.0 建議的服務。
它 XmlNodeReader 能讀取 XML DOM 子樹。 此類別不支援文件類型定義(DTD)或結構驗證。 不過,你可以建立 XmlReader 一個包裹物件 XmlNodeReader 的物件,以驗證物件中儲存 XmlNodeReader 的資料,如範例章節所示。
建構函式
| 名稱 | Description |
|---|---|
| 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 |
會得到一個值,表示目前節點是否為空元素(例如, |
| Item[Int32] |
取得帶有指定索引的屬性值。 |
| Item[Int32] |
當在派生類別中覆寫時,會得到具有指定索引的屬性值。 (繼承來源 XmlReader) |
| Item[String, String] |
取得具有指定本地名稱與命名空間 URI 的屬性值。 |
| Item[String, String] |
當在派生類別中覆寫時,會得到具有指定 LocalName 且 NamespaceURI的屬性值。 (繼承來源 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 |
取得目前的 |
| XmlSpace |
取得目前的 |
方法
明確介面實作
| 名稱 | Description |
|---|---|
| IDisposable.Dispose() |
關於此成員的描述,請參見 Dispose()。 (繼承來源 XmlReader) |
| IXmlNamespaceResolver.GetNamespacesInScope(XmlNamespaceScope) |
關於此成員的描述,請參見 GetNamespacesInScope(XmlNamespaceScope)。 |
| IXmlNamespaceResolver.LookupNamespace(String) |
關於此成員的描述,請參見 LookupNamespace(String)。 |
| IXmlNamespaceResolver.LookupPrefix(String) |
關於此成員的描述,請參見 LookupPrefix(String)。 |