XmlNodeReader 類別
定義
重要
部分資訊涉及發行前產品,在發行之前可能會有大幅修改。 Microsoft 對此處提供的資訊,不做任何明確或隱含的瑕疵擔保。
表示讀取器,其提供對 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
- 繼承
- 實作
範例
在下列範例中,會將 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' 屬性。
備註
注意
建議您使用 類別和 Create 方法,而不是使用 XmlNodeReaderXmlReaderSettings 來建立XmlReader實例。 這可讓您利用 XML 1.0 建議的一致性檢查和合規性。
XmlNodeReader
能夠讀取 XML DOM 子樹。 這個類別不支援 DTD) 或架構驗證 (檔案類型定義。 不過,您可以建立 XmlReader 對象來包裝 XmlNodeReader 物件,以驗證儲存在 對象中的數據 XmlNodeReader ,如範例一節所示。
建構函式
XmlNodeReader(XmlNode) |
使用指定的 XmlNode 來建立 |
屬性
AttributeCount |
取得目前節點的屬性數目。 |
BaseURI |
取得目前節點的基底 (Base) URI。 |
CanReadBinaryContent |
取得值,這個值表示 XmlNodeReader 是否會實作二進位內容讀取方法。 |
CanReadBinaryContent |
取得值,這個值表示 XmlReader 是否會實作二進位內容讀取方法。 (繼承來源 XmlReader) |
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 |
取得目前節點的限定名稱 (Qualified Name)。 |
NamespaceURI |
取得讀取器所在節點的命名空間 URI (如 W3C 命名空間規格中所定義)。 |
NameTable |
取得與這個實作關聯的 XmlNameTable。 |
NodeType |
取得目前節點的類型。 |
Prefix |
取得與目前節點相關聯的命名空間前置詞。 |
QuoteChar |
取得用來括住屬性節點值的引號字元。 |
QuoteChar |
在衍生類別中覆寫時,取得用來括住屬性節點值的引號字元。 (繼承來源 XmlReader) |
ReadState |
取得讀取器的狀態。 |
SchemaInfo |
取得已指派給目前節點的結構描述資訊。 |
SchemaInfo |
取得在結構描述驗證之後已指派給目前節點的結構描述資訊。 (繼承來源 XmlReader) |
Settings |
取得 XmlReaderSettings 物件,用於建立這個 XmlReader 執行個體。 (繼承來源 XmlReader) |
Value |
取得目前節點的文字值。 |
ValueType |
取得目前節點的 Common Language Runtime (CLR) 型別。 (繼承來源 XmlReader) |
XmlLang |
取得目前的 |
XmlSpace |
取得目前的 |
方法
明確介面實作
IDisposable.Dispose() |
如需這個成員的說明,請參閱 Dispose()。 (繼承來源 XmlReader) |
IXmlNamespaceResolver.GetNamespacesInScope(XmlNamespaceScope) |
如需這個成員的說明,請參閱 GetNamespacesInScope(XmlNamespaceScope)。 |
IXmlNamespaceResolver.LookupNamespace(String) |
如需這個成員的說明,請參閱 LookupNamespace(String)。 |
IXmlNamespaceResolver.LookupPrefix(String) |
如需這個成員的說明,請參閱 LookupPrefix(String)。 |