XmlWriter.WriteNode XmlWriter.WriteNode XmlWriter.WriteNode XmlWriter.WriteNode Method

Definition

Kopiert den gesamten Inhalt des Quellobjekts in die aktuelle Writer-Instanz. Copies everything from the source object to the current writer instance.

Überlädt

WriteNode(XmlReader, Boolean) WriteNode(XmlReader, Boolean) WriteNode(XmlReader, Boolean) WriteNode(XmlReader, Boolean)

Kopiert beim Überschreiben in einer abgeleiteten Klasse den gesamten Inhalt des Readers in den Writer und verschiebt den Reader zum Anfang des nächsten nebengeordneten Elements. 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) WriteNode(XPathNavigator, Boolean) WriteNode(XPathNavigator, Boolean) WriteNode(XPathNavigator, Boolean)

Kopiert den gesamten Inhalt des XPathNavigator-Objekts in den Writer. Copies everything from the XPathNavigator object to the writer. Die Position des XPathNavigator bleibt unverändert. The position of the XPathNavigator remains unchanged.

Hinweise

Die asynchrone Version dieser Methode finden Sie unter WriteNodeAsync.For the asynchronous version of this method, see WriteNodeAsync.

WriteNode(XmlReader, Boolean) WriteNode(XmlReader, Boolean) WriteNode(XmlReader, Boolean) WriteNode(XmlReader, Boolean)

Kopiert beim Überschreiben in einer abgeleiteten Klasse den gesamten Inhalt des Readers in den Writer und verschiebt den Reader zum Anfang des nächsten nebengeordneten Elements. 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)

Parameter

reader
XmlReader XmlReader XmlReader XmlReader

Der XmlReader, aus dem gelesen werden soll. The XmlReader to read from.

defattr
Boolean Boolean Boolean Boolean

true, um die Standardattribute aus dem XmlReader zu kopieren, andernfalls false. true to copy the default attributes from the XmlReader; otherwise, false.

Ausnahmen

reader enthält ungültige Zeichen. reader contains invalid characters.

Eine XmlWriter-Methode wurde aufgerufen, bevor ein vorheriger asynchroner Vorgang abgeschlossen wurde. An XmlWriter method was called before a previous asynchronous operation finished. In diesem Fall wird InvalidOperationException mit der Meldung „Es wird bereits ein asynchroner Vorgang ausgeführt“ ausgelöst. In this case, InvalidOperationException is thrown with the message "An asynchronous operation is already in progress."

Beispiele

Im folgenden Beispiel wird die erste und letzte Buchknoten an die Konsole.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
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

Im Beispiel wird die Datei books.xmlals Eingabe.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>

Hinweise

Die folgende Tabelle zeigt die unterstützten Knotentypen für diese Methode.The following table shows the supported node types for this method.

NodeTypeNodeType WriteNode-VerhaltenWriteNode Behavior
None Schreibt alle Knoten unabhängig von der Art.Writes out all the nodes irrespective of type. Der Writer, also nutzt die XmlReader und schreibt alle Knoten zu lesen, einschließlich Attribute, verarbeitungsanweisungen, Kommentare und So weiter.That is, the writer consumes the XmlReader and writes out all the nodes read including attributes, processing instructions, comments, and so on.

Diese Situation tritt auf, wenn die XmlReader befindet sich im ursprünglichen Zustand.This situation occurs when the XmlReader is in an initial state. (Die XmlReader.ReadState -Eigenschaft gibt ReaderState.Initial).(The XmlReader.ReadState property returns ReaderState.Initial).
Element Schreibt den Elementknoten und alle Attributknoten.Writes out the element node and any attribute nodes.
Attribute Keine Operation.No operation. Verwenden Sie stattdessen WriteStartAttribute oder WriteAttributeString.Use WriteStartAttribute or WriteAttributeString instead.
Text Schreibt den Textknoten.Writes out the text node.
CDATA Schreibt den CDATA-Abschnittsknoten.Writes out the CDATA section node.
EntityReference Der Entitätsverweisknoten schreibt.Writes out the entity reference node.
ProcessingInstruction Schreibt die Verarbeitungsanweisungsknoten.Writes out the processing instruction node.
Comment Schreibt den Comment-Knoten.Writes out the comment node.
DocumentType Schreibt den Dokumentknoten-Typ.Writes out the document type node.
SignificantWhitespace Schreibt den signifikanter Leerraum-Knoten.Writes out the significant white space node.
Whitespace Der Leerraumknoten schreibt.Writes out the white space node.
EndElement Schreibt das Endtag des Elements.Writes out the end element tag.
EndEntity Keine Operation.No operation.
XmlDeclaration Die Knoten für die XML-Deklaration geschrieben.Writes out the XML declaration node.

Wenn der Reader im Ausgangszustand, verschiebt diese Methode den Reader zum Ende der Datei an.If the reader is in the initial state, this method moves the reader to the end of file. Wenn der Leser bereits an das Ende der Datei oder in einem geschlossenen Zustand ist, ist diese Methode nicht betriebsbereit.If the reader is already at the end of file or in a closed state, this method is non-operational.

Der folgende C#-Code wird ein gesamte XML-Eingabedokument an die Konsole kopiert: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);  

Wenn Sie den Stammknoten verschoben haben und werden an anderer Stelle im Dokument positioniert ist im folgende C#-Beispiel ordnungsgemäß vom Knoten schreibt.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);  
 }  

Wenn der Reader so konfiguriert ist, dass um Leerraum zu zurückgegeben und des Writers ist so konfiguriert, dass der Einzug der Ausgabe WriteNode möglicherweise unerwartete Ausgabe erzeugen.If the reader is configured to return white space and the writer has is configured to indent output, WriteNode may produce strange output. Im Wesentlichen erhalten Sie doppelte formatieren.You will essentially be getting double formatting.

Die asynchrone Version dieser Methode finden Sie unter WriteNodeAsync.For the asynchronous version of this method, see WriteNodeAsync.

WriteNode(XPathNavigator, Boolean) WriteNode(XPathNavigator, Boolean) WriteNode(XPathNavigator, Boolean) WriteNode(XPathNavigator, Boolean)

Kopiert den gesamten Inhalt des XPathNavigator-Objekts in den Writer. Copies everything from the XPathNavigator object to the writer. Die Position des XPathNavigator bleibt unverändert. 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)

Parameter

navigator
XPathNavigator XPathNavigator XPathNavigator XPathNavigator

Der XPathNavigator, aus dem kopiert werden soll. The XPathNavigator to copy from.

defattr
Boolean Boolean Boolean Boolean

true, um die Standardattribute zu kopieren, andernfalls false. true to copy the default attributes; otherwise, false.

Ausnahmen

Eine XmlWriter-Methode wurde aufgerufen, bevor ein vorheriger asynchroner Vorgang abgeschlossen wurde. An XmlWriter method was called before a previous asynchronous operation finished. In diesem Fall wird InvalidOperationException mit der Meldung „Es wird bereits ein asynchroner Vorgang ausgeführt“ ausgelöst. In this case, InvalidOperationException is thrown with the message "An asynchronous operation is already in progress."

Beispiele

Im folgenden Beispiel wird die WriteNode Methode, um das erste Buchknoten aus einem Dokument kopieren und in die Konsole geschrieben.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
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

Im Beispiel wird die Datei books.xml als Eingabe verwendet.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>

Hinweise

Die folgende Tabelle zeigt die unterstützten XPath Knotentypen für diese Methode.The following table shows the supported XPath node types for this method.

XPathNodeTypeXPathNodeType WriteNode-VerhaltenWriteNode Behavior
Root Schreibt alle Knoten unabhängig von der Art.Writes out all the nodes irrespective of type. Der Writer, also nutzt die XPathNavigator und schreibt alle Knoten aus dem Stammknoten (einschließlich der Attribute, verarbeitungsanweisungen, Kommentare und So weiter).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 Schreibt den Elementknoten und alle Attributknoten.Writes out the element node and any attribute nodes.
Attribute Keine Operation.No operation. Verwenden Sie stattdessen WriteStartAttribute oder WriteAttributeString.Use WriteStartAttribute or WriteAttributeString instead.
Text Schreibt den Textknoten.Writes out the text node.
Namespace Keine Operation.No operation. Verwenden der WriteStartAttribute oder WriteAttributeString Methode, um die Namespacedeklaration zu schreiben.Use the WriteStartAttribute or WriteAttributeString method to write the namespace declaration.
ProcessingInstruction Schreibt die Verarbeitungsanweisungsknoten.Writes out the processing instruction node.
Comment Schreibt den Comment-Knoten.Writes out the comment node.
SignificantWhitespace Schreibt den signifikanter Leerraum-Knoten.Writes out the significant white space node.
Whitespace Der Leerraumknoten schreibt.Writes out the white space node.

Die asynchrone Version dieser Methode finden Sie unter WriteNodeAsync.For the asynchronous version of this method, see WriteNodeAsync.

Gilt für: