XmlNodeReader Class
Definition
Important
Some information relates to prerelease product that may be substantially modified before it’s released. Microsoft makes no warranties, express or implied, with respect to the information provided here.
Represents a reader that provides fast, non-cached forward only access to XML data in an 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
- Inheritance
- Implements
Examples
In the following example, an XML file is loaded into an XML document and modified. The XML document is passed to an XmlNodeReader, which is then passed to the XmlReader.Create method. When the validating reader parses the file, it can validate any changes made to the XML file.
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
The following two XML files are used as input.
<?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>
Output:
Validation Error: The 'publisher' attribute is not declared.
Remarks
Note
Instead of using the XmlNodeReader, we recommend that you create XmlReader instances by using the XmlReaderSettings class and the Create method. This enables you to take advantage of conformance checking and compliance to the XML 1.0 recommendation.
The XmlNodeReader
has the ability to read an XML DOM subtree. This class does not support document type definition (DTD) or schema validation. However, you can create an XmlReader object that wraps around the XmlNodeReader object to validate the data stored in the XmlNodeReader object, as shown in Examples section.
Constructors
XmlNodeReader(XmlNode) |
Creates an instance of the |
Properties
AttributeCount |
Gets the number of attributes on the current node. |
BaseURI |
Gets the base URI of the current node. |
CanReadBinaryContent |
Gets a value indicating whether the XmlNodeReader implements the binary content read methods. |
CanReadBinaryContent |
Gets a value indicating whether the XmlReader implements the binary content read methods. (Inherited from XmlReader) |
CanReadValueChunk |
Gets a value indicating whether the XmlReader implements the ReadValueChunk(Char[], Int32, Int32) method. (Inherited from XmlReader) |
CanResolveEntity |
Gets a value indicating whether this reader can parse and resolve entities. |
Depth |
Gets the depth of the current node in the XML document. |
EOF |
Gets a value indicating whether the reader is positioned at the end of the stream. |
HasAttributes |
Gets a value indicating whether the current node has any attributes. |
HasValue |
Gets a value indicating whether the current node can have a Value. |
IsDefault |
Gets a value indicating whether the current node is an attribute that was generated from the default value defined in the document type definition (DTD) or schema. |
IsEmptyElement |
Gets a value indicating whether the current node is an empty element (for example, |
Item[Int32] |
Gets the value of the attribute with the specified index. |
Item[Int32] |
When overridden in a derived class, gets the value of the attribute with the specified index. (Inherited from XmlReader) |
Item[String, String] |
Gets the value of the attribute with the specified local name and namespace URI. |
Item[String, String] |
When overridden in a derived class, gets the value of the attribute with the specified LocalName and NamespaceURI. (Inherited from XmlReader) |
Item[String] |
When overridden in a derived class, gets the value of the attribute with the specified name. |
Item[String] |
When overridden in a derived class, gets the value of the attribute with the specified Name. (Inherited from XmlReader) |
LocalName |
Gets the local name of the current node. |
Name |
Gets the qualified name of the current node. |
NamespaceURI |
Gets the namespace URI (as defined in the W3C Namespace specification) of the node on which the reader is positioned. |
NameTable |
Gets the XmlNameTable associated with this implementation. |
NodeType |
Gets the type of the current node. |
Prefix |
Gets the namespace prefix associated with the current node. |
QuoteChar |
Gets the quotation mark character used to enclose the value of an attribute node. |
QuoteChar |
When overridden in a derived class, gets the quotation mark character used to enclose the value of an attribute node. (Inherited from XmlReader) |
ReadState |
Gets the state of the reader. |
SchemaInfo |
Gets the schema information that has been assigned to the current node. |
SchemaInfo |
Gets the schema information that has been assigned to the current node as a result of schema validation. (Inherited from XmlReader) |
Settings |
Gets the XmlReaderSettings object used to create this XmlReader instance. (Inherited from XmlReader) |
Value |
Gets the text value of the current node. |
ValueType |
Gets The Common Language Runtime (CLR) type for the current node. (Inherited from XmlReader) |
XmlLang |
Gets the current |
XmlSpace |
Gets the current |
Methods
Close() |
Changes the ReadState to |
Dispose() |
Releases all resources used by the current instance of the XmlReader class. (Inherited from XmlReader) |
Dispose(Boolean) |
Releases the unmanaged resources used by the XmlReader and optionally releases the managed resources. (Inherited from XmlReader) |
Equals(Object) |
Determines whether the specified object is equal to the current object. (Inherited from Object) |
GetAttribute(Int32) |
Gets the value of the attribute with the specified index. |
GetAttribute(String, String) |
Gets the value of the attribute with the specified local name and namespace URI. |
GetAttribute(String) |
Gets the value of the attribute with the specified name. |
GetHashCode() |
Serves as the default hash function. (Inherited from Object) |
GetType() |
Gets the Type of the current instance. (Inherited from Object) |
GetValueAsync() |
Asynchronously gets the value of the current node. (Inherited from XmlReader) |
IsStartElement() |
Calls MoveToContent() and tests if the current content node is a start tag or empty element tag. (Inherited from XmlReader) |
IsStartElement(String, String) |
Calls MoveToContent() and tests if the current content node is a start tag or empty element tag and if the LocalName and NamespaceURI properties of the element found match the given strings. (Inherited from XmlReader) |
IsStartElement(String) |
Calls MoveToContent() and tests if the current content node is a start tag or empty element tag and if the Name property of the element found matches the given argument. (Inherited from XmlReader) |
LookupNamespace(String) |
Resolves a namespace prefix in the current element's scope. |
MemberwiseClone() |
Creates a shallow copy of the current Object. (Inherited from Object) |
MoveToAttribute(Int32) |
Moves to the attribute with the specified index. |
MoveToAttribute(String, String) |
Moves to the attribute with the specified local name and namespace URI. |
MoveToAttribute(String) |
Moves to the attribute with the specified name. |
MoveToContent() |
Checks whether the current node is a content (non-white space text, |
MoveToContentAsync() |
Asynchronously checks whether the current node is a content node. If the node is not a content node, the reader skips ahead to the next content node or end of file. (Inherited from XmlReader) |
MoveToElement() |
Moves to the element that contains the current attribute node. |
MoveToFirstAttribute() |
Moves to the first attribute. |
MoveToNextAttribute() |
Moves to the next attribute. |
Read() |
Reads the next node from the stream. |
ReadAsync() |
Asynchronously reads the next node from the stream. (Inherited from XmlReader) |
ReadAttributeValue() |
Parses the attribute value into one or more |
ReadContentAs(Type, IXmlNamespaceResolver) |
Reads the content as an object of the type specified. (Inherited from XmlReader) |
ReadContentAsAsync(Type, IXmlNamespaceResolver) |
Asynchronously reads the content as an object of the type specified. (Inherited from XmlReader) |
ReadContentAsBase64(Byte[], Int32, Int32) |
Reads the content and returns the Base64 decoded binary bytes. |
ReadContentAsBase64(Byte[], Int32, Int32) |
Reads the content and returns the Base64 decoded binary bytes. (Inherited from XmlReader) |
ReadContentAsBase64Async(Byte[], Int32, Int32) |
Asynchronously reads the content and returns the Base64 decoded binary bytes. (Inherited from XmlReader) |
ReadContentAsBinHex(Byte[], Int32, Int32) |
Reads the content and returns the BinHex decoded binary bytes. |
ReadContentAsBinHex(Byte[], Int32, Int32) |
Reads the content and returns the |
ReadContentAsBinHexAsync(Byte[], Int32, Int32) |
Asynchronously reads the content and returns the |
ReadContentAsBoolean() |
Reads the text content at the current position as a |
ReadContentAsDateTime() |
Reads the text content at the current position as a DateTime object. (Inherited from XmlReader) |
ReadContentAsDateTimeOffset() |
Reads the text content at the current position as a DateTimeOffset object. (Inherited from XmlReader) |
ReadContentAsDecimal() |
Reads the text content at the current position as a Decimal object. (Inherited from XmlReader) |
ReadContentAsDouble() |
Reads the text content at the current position as a double-precision floating-point number. (Inherited from XmlReader) |
ReadContentAsFloat() |
Reads the text content at the current position as a single-precision floating point number. (Inherited from XmlReader) |
ReadContentAsInt() |
Reads the text content at the current position as a 32-bit signed integer. (Inherited from XmlReader) |
ReadContentAsLong() |
Reads the text content at the current position as a 64-bit signed integer. (Inherited from XmlReader) |
ReadContentAsObject() |
Reads the text content at the current position as an Object. (Inherited from XmlReader) |
ReadContentAsObjectAsync() |
Asynchronously reads the text content at the current position as an Object. (Inherited from XmlReader) |
ReadContentAsString() |
Reads the text content at the current position as a String object. (Inherited from XmlReader) |
ReadContentAsStringAsync() |
Asynchronously reads the text content at the current position as a String object. (Inherited from XmlReader) |
ReadElementContentAs(Type, IXmlNamespaceResolver, String, String) |
Checks that the specified local name and namespace URI matches that of the current element, then reads the element content as the requested type. (Inherited from XmlReader) |
ReadElementContentAs(Type, IXmlNamespaceResolver) |
Reads the element content as the requested type. (Inherited from XmlReader) |
ReadElementContentAsAsync(Type, IXmlNamespaceResolver) |
Asynchronously reads the element content as the requested type. (Inherited from XmlReader) |
ReadElementContentAsBase64(Byte[], Int32, Int32) |
Reads the element and decodes the Base64 content. |
ReadElementContentAsBase64(Byte[], Int32, Int32) |
Reads the element and decodes the |
ReadElementContentAsBase64Async(Byte[], Int32, Int32) |
Asynchronously reads the element and decodes the |
ReadElementContentAsBinHex(Byte[], Int32, Int32) |
Reads the element and decodes the BinHex content. |
ReadElementContentAsBinHex(Byte[], Int32, Int32) |
Reads the element and decodes the |
ReadElementContentAsBinHexAsync(Byte[], Int32, Int32) |
Asynchronously reads the element and decodes the |
ReadElementContentAsBoolean() |
Reads the current element and returns the contents as a Boolean object. (Inherited from XmlReader) |
ReadElementContentAsBoolean(String, String) |
Checks that the specified local name and namespace URI matches that of the current element, then reads the current element and returns the contents as a Boolean object. (Inherited from XmlReader) |
ReadElementContentAsDateTime() |
Reads the current element and returns the contents as a DateTime object. (Inherited from XmlReader) |
ReadElementContentAsDateTime(String, String) |
Checks that the specified local name and namespace URI matches that of the current element, then reads the current element and returns the contents as a DateTime object. (Inherited from XmlReader) |
ReadElementContentAsDecimal() |
Reads the current element and returns the contents as a Decimal object. (Inherited from XmlReader) |
ReadElementContentAsDecimal(String, String) |
Checks that the specified local name and namespace URI matches that of the current element, then reads the current element and returns the contents as a Decimal object. (Inherited from XmlReader) |
ReadElementContentAsDouble() |
Reads the current element and returns the contents as a double-precision floating-point number. (Inherited from XmlReader) |
ReadElementContentAsDouble(String, String) |
Checks that the specified local name and namespace URI matches that of the current element, then reads the current element and returns the contents as a double-precision floating-point number. (Inherited from XmlReader) |
ReadElementContentAsFloat() |
Reads the current element and returns the contents as single-precision floating-point number. (Inherited from XmlReader) |
ReadElementContentAsFloat(String, String) |
Checks that the specified local name and namespace URI matches that of the current element, then reads the current element and returns the contents as a single-precision floating-point number. (Inherited from XmlReader) |
ReadElementContentAsInt() |
Reads the current element and returns the contents as a 32-bit signed integer. (Inherited from XmlReader) |
ReadElementContentAsInt(String, String) |
Checks that the specified local name and namespace URI matches that of the current element, then reads the current element and returns the contents as a 32-bit signed integer. (Inherited from XmlReader) |
ReadElementContentAsLong() |
Reads the current element and returns the contents as a 64-bit signed integer. (Inherited from XmlReader) |
ReadElementContentAsLong(String, String) |
Checks that the specified local name and namespace URI matches that of the current element, then reads the current element and returns the contents as a 64-bit signed integer. (Inherited from XmlReader) |
ReadElementContentAsObject() |
Reads the current element and returns the contents as an Object. (Inherited from XmlReader) |
ReadElementContentAsObject(String, String) |
Checks that the specified local name and namespace URI matches that of the current element, then reads the current element and returns the contents as an Object. (Inherited from XmlReader) |
ReadElementContentAsObjectAsync() |
Asynchronously reads the current element and returns the contents as an Object. (Inherited from XmlReader) |
ReadElementContentAsString() |
Reads the current element and returns the contents as a String object. (Inherited from XmlReader) |
ReadElementContentAsString(String, String) |
Checks that the specified local name and namespace URI matches that of the current element, then reads the current element and returns the contents as a String object. (Inherited from XmlReader) |
ReadElementContentAsStringAsync() |
Asynchronously reads the current element and returns the contents as a String object. (Inherited from XmlReader) |
ReadElementString() |
Reads a text-only element. However, we recommend that you use the ReadElementContentAsString() method instead, because it provides a more straightforward way to handle this operation. (Inherited from XmlReader) |
ReadElementString(String, String) |
Checks that the LocalName and NamespaceURI properties of the element found matches the given strings before reading a text-only element. However, we recommend that you use the ReadElementContentAsString(String, String) method instead, because it provides a more straightforward way to handle this operation. (Inherited from XmlReader) |
ReadElementString(String) |
Checks that the Name property of the element found matches the given string before reading a text-only element. However, we recommend that you use the ReadElementContentAsString() method instead, because it provides a more straightforward way to handle this operation. (Inherited from XmlReader) |
ReadEndElement() |
Checks that the current content node is an end tag and advances the reader to the next node. (Inherited from XmlReader) |
ReadInnerXml() |
When overridden in a derived class, reads all the content, including markup, as a string. (Inherited from XmlReader) |
ReadInnerXmlAsync() |
Asynchronously reads all the content, including markup, as a string. (Inherited from XmlReader) |
ReadOuterXml() |
When overridden in a derived class, reads the content, including markup, representing this node and all its children. (Inherited from XmlReader) |
ReadOuterXmlAsync() |
Asynchronously reads the content, including markup, representing this node and all its children. (Inherited from XmlReader) |
ReadStartElement() |
Checks that the current node is an element and advances the reader to the next node. (Inherited from XmlReader) |
ReadStartElement(String, String) |
Checks that the current content node is an element with the given LocalName and NamespaceURI and advances the reader to the next node. (Inherited from XmlReader) |
ReadStartElement(String) |
Checks that the current content node is an element with the given Name and advances the reader to the next node. (Inherited from XmlReader) |
ReadString() |
Reads the contents of an element or text node as a string. |
ReadSubtree() |
Returns a new |
ReadToDescendant(String, String) |
Advances the XmlReader to the next descendant element with the specified local name and namespace URI. (Inherited from XmlReader) |
ReadToDescendant(String) |
Advances the XmlReader to the next descendant element with the specified qualified name. (Inherited from XmlReader) |
ReadToFollowing(String, String) |
Reads until an element with the specified local name and namespace URI is found. (Inherited from XmlReader) |
ReadToFollowing(String) |
Reads until an element with the specified qualified name is found. (Inherited from XmlReader) |
ReadToNextSibling(String, String) |
Advances the |
ReadToNextSibling(String) |
Advances the |
ReadValueChunk(Char[], Int32, Int32) |
Reads large streams of text embedded in an XML document. (Inherited from XmlReader) |
ReadValueChunkAsync(Char[], Int32, Int32) |
Asynchronously reads large streams of text embedded in an XML document. (Inherited from XmlReader) |
ResolveEntity() |
Resolves the entity reference for |
Skip() |
Skips the children of the current node. |
SkipAsync() |
Asynchronously skips the children of the current node. (Inherited from XmlReader) |
ToString() |
Returns a string that represents the current object. (Inherited from Object) |
Explicit Interface Implementations
IDisposable.Dispose() |
For a description of this member, see Dispose(). (Inherited from XmlReader) |
IXmlNamespaceResolver.GetNamespacesInScope(XmlNamespaceScope) |
For a description of this member, see GetNamespacesInScope(XmlNamespaceScope). |
IXmlNamespaceResolver.LookupNamespace(String) |
For a description of this member, see LookupNamespace(String). |
IXmlNamespaceResolver.LookupPrefix(String) |
For a description of this member, see LookupPrefix(String). |