XmlDocument.ReadNode(XmlReader) Метод

Определение

Создает объект XmlNode на основе данных из XmlReader.Creates an XmlNode object based on the information in the XmlReader. Средство чтения должно быть позиционировано на узел или атрибут.The reader must be positioned on a node or attribute.

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

Источник XMLThe XML source

Возвраты

Новый XmlNode или значение null, если больше узлов не существует.The new XmlNode or null if no more nodes exist.

Исключения

Средство чтения расположено на узле, тип которого не преобразуется в допустимый узел DOM (например, EndElement или EndEntity).The reader is positioned on a node type that does not translate to a valid DOM node (for example, EndElement or EndEntity).

Примеры

В следующем примере используется ReadNode для создания нового узла, а затем в документ вставляется новый узел.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 );
}

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.The example uses the file, cd.xml, as input.


<!-- sample CD -->
<cd genre='alternative'>
  <title>Americana</title>
  <artist>Offspring</artist>
</cd>

Комментарии

Считывает один XmlNode из заданного модуля чтения и позиционирует модуль чтения на следующий узел.Reads one XmlNode from the given reader and positions the reader on the next node. Этот метод создает тип XmlNode сопоставления, NodeType для которого в настоящий момент находится модуль чтения.This method creates the type of XmlNode matching the NodeType on which the reader is currently positioned. (Если модуль чтения находится в начальном состоянии, ReadNode перемещает модуль чтения на первый узел, а затем работает с этим узлом.)(If the reader is in the initial state, ReadNode advances the reader to the first node and then operates on that node.)

Если модуль чтения располагается в начале элемента, ReadNode считывает все атрибуты и все дочерние узлы вплоть до закрывающего тега текущего узла и включая его.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. Возвращаемое значение XmlNode содержит поддерево, представляющее все считанные.The XmlNode returned contains the sub-tree representing everything read. Модуль чтения располагается сразу после закрывающего тега.The reader is positioned immediately after the end tag.

ReadNodeтакже может считывать атрибуты, но в данном случае не переместит средство чтения к следующему атрибуту.ReadNode can also read attributes, but in this case it does not advance the reader to the next attribute. Это позволяет написать следующий C# код: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использует значение атрибута, а это означает, что после вызова ReadNode для XmlReader.ReadAttributeValue атрибута возвращает false.ReadNode does consume the attribute value though, which means after calling ReadNode on an attribute, XmlReader.ReadAttributeValue returns false.

Примечания для тех, кто наследует этот метод

Этот метод имеет требование наследования.This method has an inheritance demand. Для переопределения ReadNode метода требуется полное доверие.Full trust is required to override the ReadNode method.

Этот метод является расширением Майкрософт для модель DOM (DOM).This method is a Microsoft extension to the Document Object Model (DOM).

Применяется к

Дополнительно