Condividi tramite


XmlDocument.ReadNode(XmlReader) Metodo

Definizione

Crea un XmlNode oggetto in base alle informazioni contenute in XmlReader. Il lettore deve essere posizionato su un nodo o un attributo.

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

Parametri

reader
XmlReader

Origine XML.

Restituisce

XmlNode Nuovo o null se non esistono più nodi.

Eccezioni

Il lettore è posizionato in un tipo di nodo che non viene convertito in un nodo DOM valido, ad esempio EndElement o EndEntity.

Esempio

Nell'esempio seguente viene ReadNode usato per creare un nuovo nodo e quindi inserire il nuovo nodo nel documento.

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

Nell'esempio viene usato il file , cd.xml, come input.


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

Commenti

Legge uno XmlNode dal lettore specificato e posiziona il lettore nel nodo successivo. Questo metodo crea il tipo di corrispondenza dell'oggetto XmlNodeNodeType in cui è attualmente posizionato il lettore. Se il lettore è nello stato iniziale, ReadNode sposta il lettore al primo nodo e quindi opera su tale nodo.

Se il lettore viene posizionato all'inizio di un elemento, ReadNode legge tutti gli attributi e tutti i nodi figlio, fino al tag finale del nodo corrente. L'oggetto XmlNode restituito contiene il sottoalbero che rappresenta tutti gli elementi letti. Il lettore viene posizionato immediatamente dopo il tag di fine.

ReadNode può anche leggere gli attributi, ma in questo caso non fa avanzare il lettore all'attributo successivo. In questo modo è possibile scrivere il codice C# seguente:

XmlDocument doc = new XmlDocument();
while (reader.MoveToNextAttribute())
{
  XmlNode a = doc.ReadNode(reader);
  // Do some more processing.
}

ReadNode utilizza però il valore dell'attributo, ovvero dopo aver chiamato ReadNode su un attributo, XmlReader.ReadAttributeValue restituisce false.

Note per gli eredi

Questo metodo ha una richiesta di ereditarietà. L'attendibilità totale è necessaria per eseguire l'override del ReadNode metodo .

Questo metodo è un'estensione Microsoft al DOM (Document Object Model).

Si applica a

Vedi anche