XmlWriter.WriteNode Metodo

Definizione

Copia tutti gli elementi dell'oggetto di origine nell'istanza corrente del writer.Copies everything from the source object to the current writer instance.

Overload

WriteNode(XmlReader, Boolean)

Quando ne viene eseguito l'override in una classe derivata, copia tutto il contenuto del lettore nel writer e sposta il lettore all'inizio del successivo elemento di pari livello.When overridden in a derived class, copies everything from the reader to the writer and moves the reader to the start of the next sibling.

WriteNode(XPathNavigator, Boolean)

Copia tutti gli elementi dall'oggetto XPathNavigator nel writer.Copies everything from the XPathNavigator object to the writer. La posizione di XPathNavigator resta invariata.The position of the XPathNavigator remains unchanged.

Commenti

Per la versione asincrona di questo metodo, vedere WriteNodeAsync.For the asynchronous version of this method, see WriteNodeAsync.

WriteNode(XmlReader, Boolean)

Quando ne viene eseguito l'override in una classe derivata, copia tutto il contenuto del lettore nel writer e sposta il lettore all'inizio del successivo elemento di pari livello.When overridden in a derived class, copies everything from the reader to the writer and moves the reader to the start of the next sibling.

public:
 virtual void WriteNode(System::Xml::XmlReader ^ reader, bool defattr);
public virtual void WriteNode (System.Xml.XmlReader reader, bool defattr);
abstract member WriteNode : System.Xml.XmlReader * bool -> unit
override this.WriteNode : System.Xml.XmlReader * bool -> unit
Public Overridable Sub WriteNode (reader As XmlReader, defattr As Boolean)

Parametri

reader
XmlReader

Oggetto XmlReader da cui leggere.The XmlReader to read from.

defattr
Boolean

true per copiare gli attributi predefiniti dalla classe XmlReader; in caso contrario, false.true to copy the default attributes from the XmlReader; otherwise, false.

Eccezioni

reader è null.reader is null.

reader contiene caratteri non validi.reader contains invalid characters.

È stato chiamato un metodo della classe XmlWriter prima del completamento di un'operazione asincrona precedente.An XmlWriter method was called before a previous asynchronous operation finished. In questo caso, viene generata l'eccezione InvalidOperationException con il messaggio "È già in corso un'operazione asincrona".In this case, InvalidOperationException is thrown with the message "An asynchronous operation is already in progress."

Esempio

Nell'esempio seguente vengono scritti il primo e l'ultimo nodo del libro nella console.The following example writes the first and last book nodes out to the console.

#using <System.Xml.dll>

using namespace System;
using namespace System::IO;
using namespace System::Xml;
int main()
{
   XmlTextReader^ reader = gcnew XmlTextReader( "books.xml" );
   reader->WhitespaceHandling = WhitespaceHandling::None;
   
   // Move the reader to the first book element.
   reader->MoveToContent();
   reader->Read();
   
   // Create a writer that outputs to the console.
   XmlTextWriter^ writer = gcnew XmlTextWriter( Console::Out );
   writer->Formatting = Formatting::Indented;
   
   // Write the start tag.
   writer->WriteStartElement( "myBooks" );
   
   // Write the first book.
   writer->WriteNode( reader, false );
   
   // Skip the second book.
   reader->Skip();
   
   // Write the last book.
   writer->WriteNode( reader, false );
   writer->WriteEndElement();
   
   // Close the writer and the reader.
   writer->Close();
   reader->Close();
}

using System;
using System.IO;
using System.Xml;

public class Sample{

  public static void Main(){

    XmlTextReader reader = new XmlTextReader("books.xml");
    reader.WhitespaceHandling = WhitespaceHandling.None;

    //Move the reader to the first book element.
    reader.MoveToContent();
    reader.Read();

    //Create a writer that outputs to the console.
    XmlTextWriter writer = new XmlTextWriter (Console.Out);
    writer.Formatting = Formatting.Indented;
    
    //Write the start tag.
    writer.WriteStartElement("myBooks");

    //Write the first book.
    writer.WriteNode(reader, false);

    //Skip the second book.
    reader.Skip();

    //Write the last book.
    writer.WriteNode(reader, false);
    writer.WriteEndElement();

    //Close the writer and the reader.
    writer.Close();
    reader.Close();
  }
}
Imports System.IO
Imports System.Xml

public class Sample

  public shared sub Main()

    Dim reader as XmlTextReader = new XmlTextReader("books.xml")
    reader.WhitespaceHandling = WhitespaceHandling.None

    'Move the reader to the first book element.
    reader.MoveToContent()
    reader.Read()

    'Create a writer that outputs to the console.
    Dim writer as XmlTextWriter = new XmlTextWriter (Console.Out)
    writer.Formatting = Formatting.Indented
    
    'Write the start tag.
    writer.WriteStartElement("myBooks")

    'Write the first book.
    writer.WriteNode(reader, false)

    'Skip the second book.
    reader.Skip()

    'Write the last book.
    writer.WriteNode(reader, false)
    writer.WriteEndElement()

    'Close the writer and the reader.
    writer.Close()
    reader.Close()

  end sub
end class

Nell'esempio viene usato il file books.xmlcome input.The example uses the file, books.xml, as input.

<bookstore>
  <book genre="autobiography" publicationdate="1981" ISBN="1-861003-11-0">
    <title>The Autobiography of Benjamin Franklin</title>
    <author>
      <first-name>Benjamin</first-name>
      <last-name>Franklin</last-name>
    </author>
    <price>8.99</price>
  </book>
  <book genre="novel" publicationdate="1967" ISBN="0-201-63361-2">
    <title>The Confidence Man</title>
    <author>
      <first-name>Herman</first-name>
      <last-name>Melville</last-name>
    </author>
    <price>11.99</price>
  </book>
  <book genre="philosophy" publicationdate="1991" ISBN="1-861001-57-6">
    <title>The Gorgias</title>
    <author>
      <name>Plato</name>
    </author>
    <price>9.99</price>
  </book>
</bookstore>

Commenti

La tabella seguente illustra i tipi di nodo supportati per questo metodo.The following table shows the supported node types for this method.

Tipo di nodoNodeType Comportamento di WriteNodeWriteNode Behavior
None Scrive tutti i nodi indipendentemente dal tipo.Writes out all the nodes irrespective of type. Ovvero, il writer utilizza il XmlReader e scrive tutti i nodi letti, inclusi attributi, istruzioni di elaborazione, commenti e così via.That is, the writer consumes the XmlReader and writes out all the nodes read including attributes, processing instructions, comments, and so on.

Questa situazione si verifica quando il XmlReader è in uno stato iniziale.This situation occurs when the XmlReader is in an initial state. (La proprietà XmlReader.ReadState restituisce ReaderState.Initial).(The XmlReader.ReadState property returns ReaderState.Initial).
Element Scrive il nodo dell'elemento e tutti i nodi attributo.Writes out the element node and any attribute nodes.
Attribute No operation.No operation. In sostituzione utilizzare WriteStartAttribute o WriteAttributeString.Use WriteStartAttribute or WriteAttributeString instead.
Text Scrive il nodo testo.Writes out the text node.
CDATA Scrive il nodo della sezione CDATA.Writes out the CDATA section node.
EntityReference Scrive il nodo del riferimento all'entità.Writes out the entity reference node.
ProcessingInstruction Scrive il nodo istruzione di elaborazione.Writes out the processing instruction node.
Comment Scrive il nodo di commento.Writes out the comment node.
DocumentType Scrive il nodo del tipo di documento.Writes out the document type node.
SignificantWhitespace Scrive il nodo spazio vuoto significativo.Writes out the significant white space node.
Whitespace Scrive il nodo dello spazio vuoto.Writes out the white space node.
EndElement Scrive il tag dell'elemento finale.Writes out the end element tag.
EndEntity No operation.No operation.
XmlDeclaration Scrive il nodo della dichiarazione XML.Writes out the XML declaration node.

Se il Reader è nello stato iniziale, questo metodo sposta il Reader alla fine del file.If the reader is in the initial state, this method moves the reader to the end of file. Se il lettore si trova già alla fine del file o in uno stato chiuso, questo metodo non è operativo.If the reader is already at the end of file or in a closed state, this method is non-operational.

Il codice C# seguente copia un intero documento di input XML nella console:The following C# code copies an entire XML input document to the console:

XmlReader reader = XmlReader.Create(myfile);  
XmlWriter writer = XmlWriter.Create(Console.Out);  
writer.WriteNode(reader, false);  

Se è stato spostato al di fuori del nodo radice e sono posizionati altrove nel documento C# , l'esempio seguente scrive correttamente i nodi.If you have moved off the root node and are positioned elsewhere in the document the following C# example correctly writes out the nodes.

XmlReader reader = XmlReader.Create(myfile);  
reader.Read(); // Read PI  
reader.Read(); // Read Comment  
reader.Read(); // Read DOCType  
XmlWriter writer = XmlWriter.Create(Console.Out);  
while (!reader.EOF){  
  writer.WriteNode(reader, false);  
 }  

Se il lettore è configurato per restituire lo spazio vuoto e il writer è configurato per rientrare nell'output, WriteNode possibile produrre un output strano.If the reader is configured to return white space and the writer has is configured to indent output, WriteNode may produce strange output. Si otterrà essenzialmente una doppia formattazione.You will essentially be getting double formatting.

Per la versione asincrona di questo metodo, vedere WriteNodeAsync.For the asynchronous version of this method, see WriteNodeAsync.

WriteNode(XPathNavigator, Boolean)

Copia tutti gli elementi dall'oggetto XPathNavigator nel writer.Copies everything from the XPathNavigator object to the writer. La posizione di XPathNavigator resta invariata.The position of the XPathNavigator remains unchanged.

public:
 virtual void WriteNode(System::Xml::XPath::XPathNavigator ^ navigator, bool defattr);
public virtual void WriteNode (System.Xml.XPath.XPathNavigator navigator, bool defattr);
abstract member WriteNode : System.Xml.XPath.XPathNavigator * bool -> unit
override this.WriteNode : System.Xml.XPath.XPathNavigator * bool -> unit
Public Overridable Sub WriteNode (navigator As XPathNavigator, defattr As Boolean)

Parametri

navigator
XPathNavigator

XPathNavigator da cui copiare.The XPathNavigator to copy from.

defattr
Boolean

true per copiare gli attributi predefiniti; in caso contrario, false.true to copy the default attributes; otherwise, false.

Eccezioni

navigator è null.navigator is null.

È stato chiamato un metodo della classe XmlWriter prima del completamento di un'operazione asincrona precedente.An XmlWriter method was called before a previous asynchronous operation finished. In questo caso, viene generata l'eccezione InvalidOperationException con il messaggio "È già in corso un'operazione asincrona".In this case, InvalidOperationException is thrown with the message "An asynchronous operation is already in progress."

Esempio

Nell'esempio seguente viene usato il metodo WriteNode per copiare il primo nodo del libro da un documento e scriverlo nella console.The following example uses the WriteNode method to copy the first book node from a document and write it to the console.

using System;
using System.IO;
using System.Xml;
using System.Xml.XPath;

public class Sample
{

    public static void Main()
    {

        XPathDocument doc = new XPathDocument("books.xml");
        XPathNavigator nav = doc.CreateNavigator();

        // Create a writer that outputs to the console.
        XmlWriter writer = XmlWriter.Create(Console.Out);

        // Write the start tag.
        writer.WriteStartElement("myBooks");

        // Write the first book.
        nav.MoveToChild("bookstore", "");
        nav.MoveToChild("book", "");
        writer.WriteNode(nav, false);

        // Close the start tag.
        writer.WriteEndElement();

        // Close the writer.
        writer.Close();
    }
}
Imports System.IO
Imports System.Xml
Imports System.Xml.XPath

Module Module1

    Sub Main()

        Dim doc As XPathDocument = New XPathDocument("books.xml")
        Dim nav As XPathNavigator = doc.CreateNavigator()

        ' Create a writer that outputs to the console.
        Dim writer As XmlWriter = XmlWriter.Create(Console.Out)

        ' Write the start tag.
        writer.WriteStartElement("myBooks")

        ' Write the first book.
        nav.MoveToChild("bookstore", "")
        nav.MoveToChild("book", "")
        writer.WriteNode(nav, False)

        ' Close the start tag.
        writer.WriteEndElement()

        ' Close the writer.
        writer.Close()

    End Sub
End Module

Nell'esempio viene utilizzato il file Books. XML come input.The example uses the books.xml file as input.

<?xml version="1.0" encoding="utf-8" ?> 
<bookstore>
    <book genre="autobiography" publicationdate="1981-03-22" ISBN="1-861003-11-0">
        <title>The Autobiography of Benjamin Franklin</title>
        <author>
            <first-name>Benjamin</first-name>
            <last-name>Franklin</last-name>
        </author>
        <price>8.99</price>
    </book>
    <book genre="novel" publicationdate="1967-11-17" ISBN="0-201-63361-2">
        <title>The Confidence Man</title>
        <author>
            <first-name>Herman</first-name>
            <last-name>Melville</last-name>
        </author>
        <price>11.99</price>
    </book>
    <book genre="philosophy" publicationdate="1991-02-15" ISBN="1-861001-57-6">
        <title>The Gorgias</title>
        <author>
            <name>Plato</name>
        </author>
        <price>9.99</price>
    </book>
</bookstore>

Commenti

La tabella seguente illustra i tipi di nodo XPath supportati per questo metodo.The following table shows the supported XPath node types for this method.

XPathNodeTypeXPathNodeType Comportamento di WriteNodeWriteNode Behavior
Root Scrive tutti i nodi indipendentemente dal tipo.Writes out all the nodes irrespective of type. Ovvero, il writer utilizza il XPathNavigator e scrive tutti i nodi dal nodo radice, inclusi attributi, istruzioni di elaborazione, commenti e così via.That is, the writer consumes the XPathNavigator and writes out all the nodes from the root node (including attributes, processing instructions, comments and so on.)
Element Scrive il nodo dell'elemento e tutti i nodi attributo.Writes out the element node and any attribute nodes.
Attribute No operation.No operation. In sostituzione utilizzare WriteStartAttribute o WriteAttributeString.Use WriteStartAttribute or WriteAttributeString instead.
Text Scrive il nodo testo.Writes out the text node.
Namespace No operation.No operation. Usare il metodo WriteStartAttribute o WriteAttributeString per scrivere la dichiarazione dello spazio dei nomi.Use the WriteStartAttribute or WriteAttributeString method to write the namespace declaration.
ProcessingInstruction Scrive il nodo istruzione di elaborazione.Writes out the processing instruction node.
Comment Scrive il nodo di commento.Writes out the comment node.
SignificantWhitespace Scrive il nodo spazio vuoto significativo.Writes out the significant white space node.
Whitespace Scrive il nodo dello spazio vuoto.Writes out the white space node.

Per la versione asincrona di questo metodo, vedere WriteNodeAsync.For the asynchronous version of this method, see WriteNodeAsync.

Si applica a