XmlDocument.ReadNode(XmlReader) Метод
Определение
Важно!
Некоторые сведения относятся к предварительной версии продукта, в которую до выпуска могут быть внесены существенные изменения. Майкрософт не предоставляет никаких гарантий, явных или подразумеваемых, относительно приведенных здесь сведений.
public:
virtual System::Xml::XmlNode ^ ReadNode(System::Xml::XmlReader ^ reader);
public virtual System.Xml.XmlNode ReadNode (System.Xml.XmlReader reader);
public virtual System.Xml.XmlNode? ReadNode (System.Xml.XmlReader reader);
abstract member ReadNode : System.Xml.XmlReader -> System.Xml.XmlNode
override this.ReadNode : System.Xml.XmlReader -> System.Xml.XmlNode
Public Overridable Function ReadNode (reader As XmlReader) As XmlNode
Параметры
- reader
- XmlReader
Источник XML.
Возвращаемое значение
Новый XmlNode
или значение null
, если больше узлов не существует.
Исключения
Средство чтения расположено на узле, тип которого не преобразуется в допустимый узел DOM (например, EndElement или EndEntity).
Примеры
В следующем примере используется ReadNode
для создания нового узла, а затем он вставляется в документ.
#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 );
}
using System;
using System.IO;
using System.Xml;
public class Sample
{
public static void Main()
{
//Create the XmlDocument.
XmlDocument doc = new XmlDocument();
doc.LoadXml("<bookstore>" +
"<book genre='novel' ISBN='1-861001-57-5'>" +
"<title>Pride And Prejudice</title>" +
"</book>" +
"</bookstore>");
//Create a reader.
XmlTextReader reader = new 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);
}
}
Option Explicit
Option Strict
Imports System.IO
Imports System.Xml
Public Class Sample
Public Shared Sub Main()
'Create the XmlDocument.
Dim doc As New XmlDocument()
doc.LoadXml("<bookstore>" & _
"<book genre='novel' ISBN='1-861001-57-5'>" & _
"<title>Pride And Prejudice</title>" & _
"</book>" & _
"</bookstore>")
'Create a reader.
Dim reader As New XmlTextReader("cd.xml")
reader.MoveToContent() 'Move to the cd element node.
'Create a node representing the cd element node.
Dim cd As XmlNode = doc.ReadNode(reader)
'Insert the new node into the document.
doc.DocumentElement.AppendChild(cd)
Console.WriteLine("Display the modified XML...")
doc.Save(Console.Out)
End Sub
End Class
В этом примере в качестве входных данных используется файл cd.xml
.
<!-- sample CD -->
<cd genre='alternative'>
<title>Americana</title>
<artist>Offspring</artist>
</cd>
Комментарии
Считывает объект XmlNode
из заданного средства чтения и размещает средство чтения на следующем узле. Этот метод создает тип XmlNode
сопоставления , NodeType на котором в данный момент размещено средство чтения. (Если средство чтения находится в начальном состоянии, ReadNode
перемещает средство чтения к первому узлу, а затем работает с этим узлом.)
Если средство чтения расположено в начале элемента, ReadNode
считывает все атрибуты и все дочерние узлы, вплоть до конечного тега текущего узла.
XmlNode
Возвращаемый объект содержит вложенное дерево, представляющее все прочитанное. Средство чтения размещается сразу после конечного тега.
ReadNode
также может считывать атрибуты, но в этом случае он не перемещает средство чтения к следующему атрибуту. Это позволяет написать следующий код C#:
XmlDocument doc = new XmlDocument();
while (reader.MoveToNextAttribute())
{
XmlNode a = doc.ReadNode(reader);
// Do some more processing.
}
ReadNode
использует значение атрибута, однако, что означает, что после вызова ReadNode
для атрибута возвращает XmlReader.ReadAttributeValue .false
Примечания для тех, кто наследует этот метод
Этот метод требует наследования. Для переопределения ReadNode
метода требуется полное доверие.
Этот метод является расширением Майкрософт для модели DOM.