Прочитать на английском

Поделиться через


XmlDocument.ReadNode(XmlReader) Метод

Определение

Создает объект XmlNode на основе данных из XmlReader. Средство чтения должно быть позиционировано на узел или атрибут.

public virtual System.Xml.XmlNode ReadNode(System.Xml.XmlReader reader);
public virtual System.Xml.XmlNode? ReadNode(System.Xml.XmlReader reader);

Параметры

reader
XmlReader

Источник XML.

Возвращаемое значение

Новый XmlNode или значение null, если больше узлов не существует.

Исключения

Средство чтения расположено на узле, тип которого не преобразуется в допустимый узел DOM (например, EndElement или EndEntity).

Примеры

В следующем примере используется ReadNode для создания нового узла, а затем он вставляется в документ.

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);
  }
}

В этом примере в качестве входных данных используется файл 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.

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

Продукт Версии
.NET Core 1.0, Core 1.1, Core 2.0, Core 2.1, Core 2.2, Core 3.0, Core 3.1, 5, 6, 7, 8, 9, 10
.NET Framework 1.1, 2.0, 3.0, 3.5, 4.0, 4.5, 4.5.1, 4.5.2, 4.6, 4.6.1, 4.6.2, 4.7, 4.7.1, 4.7.2, 4.8, 4.8.1
.NET Standard 2.0, 2.1
UWP 10.0

См. также раздел