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”属性。
注解
注意
建议使用 类和 方法创建XmlReader实例,而不是使用 。XmlNodeReaderXmlReaderSettingsCreate 这使你能够利用符合性检查和符合 XML 1.0 建议。
XmlNodeReader
能够读取 XML DOM 子树。 此类不支持文档类型定义 (DTD) 或架构验证。 但是,可以创建一个 XmlReader 环绕 XmlNodeReader 对象的对象,以验证存储在对象中的数据 XmlNodeReader ,如示例部分所示。
构造函数
XmlNodeReader(XmlNode) |
使用指定的 XmlNode 创建 |
属性
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 |
获取一个值,该值指示当前节点是否为空元素, (例如 |
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 |
获取已分配给当前节点的架构信息。 |
SchemaInfo |
获取作为架构验证结果分配给当前节点的架构信息。 (继承自 XmlReader) |
Settings |
获取用于创建此 XmlReader 实例的 XmlReaderSettings 对象。 (继承自 XmlReader) |
Value |
获取当前节点的文本值。 |
ValueType |
获取当前节点的公共语言运行时 (CLR) 类型。 (继承自 XmlReader) |
XmlLang |
获取当前 |
XmlSpace |
获取当前 |
方法
显式接口实现
IDisposable.Dispose() |
有关此成员的说明,请参见 Dispose()。 (继承自 XmlReader) |
IXmlNamespaceResolver.GetNamespacesInScope(XmlNamespaceScope) |
有关此成员的说明,请参见 GetNamespacesInScope(XmlNamespaceScope)。 |
IXmlNamespaceResolver.LookupNamespace(String) |
有关此成员的说明,请参见 LookupNamespace(String)。 |
IXmlNamespaceResolver.LookupPrefix(String) |
有关此成员的说明,请参见 LookupPrefix(String)。 |