XmlDocument::ReadNode Method
Assembly: System.Xml (in System.Xml.dll)
[PermissionSetAttribute(SecurityAction::InheritanceDemand, Name = L"FullTrust")] public: virtual XmlNode^ ReadNode( XmlReader^ reader )
Parameters
- reader
- Type: System.Xml::XmlReader
The XML source
| Exception | Condition |
|---|---|
| NullReferenceException | The reader is positioned on a node type that does not translate to a valid DOM node (for example, EndElement or EndEntity). |
Reads one XmlNode from the given reader and positions the reader on the next node. This method creates the type of XmlNode matching the NodeType on which the reader is currently positioned. (If the reader is in the initial state, ReadNode advances the reader to the first node and then operates on that node.)
If the reader is positioned on the start of an element, ReadNode reads all the attributes and any child nodes, up to and including the end tag of the current node. The XmlNode returned contains the sub-tree representing everything read. The reader is positioned immediately after the end tag.
ReadNode can also read attributes, but in this case it does not advance the reader to the next attribute. This allows you to write the following C# code:
XmlDocument doc = new XmlDocument();
while (reader.MoveToNextAttribute())
{
XmlNode a = doc.ReadNode(reader);
// Do some more processing.
}
ReadNode does consume the attribute value though, which means after calling ReadNode on an attribute, XmlReader::ReadAttributeValue returns false.
Notes to InheritorsThis method has an inheritance demand. Full trust is required to override the ReadNode method. See Inheritance Demands for more information.
This method is a Microsoft extension to the Document Object Model (DOM).
The following example uses ReadNode to create a new node and then inserts the new node into the document.
#using <System.Xml.dll> using namespace System; using namespace System::IO; using namespace System::Xml; int main() { //Create the XmlDocument. XmlDocument^ doc = gcnew XmlDocument; doc->LoadXml( "<bookstore><book genre='novel' ISBN='1-861001-57-5'><title>Pride And Prejudice</title></book></bookstore>" ); //Create a reader. XmlTextReader^ reader = gcnew XmlTextReader( "cd.xml" ); reader->MoveToContent(); //Move to the cd element node. //Create a node representing the cd element node. XmlNode^ cd = doc->ReadNode( reader ); //Insert the new node into the document. doc->DocumentElement->AppendChild( cd ); Console::WriteLine( "Display the modified XML..." ); doc->Save( Console::Out ); }
The example uses the file, cd.xml, as input.
<!-- sample CD --> <cd genre='alternative'> <title>Americana</title> <artist>Offspring</artist> </cd>
Windows 7, Windows Vista SP1 or later, Windows XP SP3, Windows XP SP2 x64 Edition, Windows Server 2008 (Server Core not supported), Windows Server 2008 R2 (Server Core supported with SP1 or later), Windows Server 2003 SP2
The .NET Framework does not support all versions of every platform. For a list of the supported versions, see .NET Framework System Requirements.