XmlWriter.WriteNode Methode

Definition

Kopiert den gesamten Inhalt des Quellobjekts in die aktuelle Writer-Instanz.

Überlädt

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.

WriteNode(XPathNavigator, Boolean)

Kopiert den gesamten Inhalt des XPathNavigator-Objekts in den Writer. Die Position des XPathNavigator bleibt unverändert.

Hinweise

Die asynchrone Version dieser Methode finden Sie unter WriteNodeAsync.

WriteNode(XmlReader, Boolean)

Quelle:
XmlWriter.cs
Quelle:
XmlWriter.cs
Quelle:
XmlWriter.cs

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.

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

Der XmlReader, aus dem gelesen werden soll.

defattr
Boolean

true, um die Standardattribute aus dem XmlReader zu kopieren, andernfalls false.

Ausnahmen

reader ist null.

reader enthält ungültige Zeichen.

Eine XmlWriter-Methode wurde aufgerufen, bevor ein vorheriger asynchroner Vorgang abgeschlossen wurde. In diesem Fall wird InvalidOperationException mit der Meldung „Es wird bereits ein asynchroner Vorgang ausgeführt“ ausgelöst.

Beispiele

Im folgenden Beispiel werden die ersten und letzten Buchknoten in die Konsole geschrieben.

#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

Im Beispiel wird die Datei als books.xmlEingabe verwendet.

<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.

NodeType WriteNode-Verhalten
None Schreibt alle Knoten unabhängig vom Typ aus. Das heißt, der Writer nutzt die XmlReader und schreibt alle gelesenen Knoten aus, einschließlich Attributen, Verarbeitungsanweisungen, Kommentaren usw.

Diese Situation tritt auf, wenn sich der XmlReader in einem Anfangszustand befindet. (Die XmlReader.ReadState -Eigenschaft gibt zurück ReaderState.Initial.
Element Schreibt den Elementknoten und alle Attributknoten aus.
Attribute Keine Operation. Verwenden Sie stattdessen WriteStartAttribute oder WriteAttributeString.
Text Schreibt den Textknoten.
CDATA Schreibt den CDATA-Abschnittsknoten.
EntityReference Schreibt den Entitätsverweisknoten aus.
ProcessingInstruction Schreibt den Knoten der Verarbeitungsanweisung aus.
Comment Schreibt den Kommentarknoten aus.
DocumentType Schreibt den Dokumenttypknoten aus.
SignificantWhitespace Schreibt den signifikanten Leerraumknoten aus.
Whitespace Schreibt den Leerraumknoten aus.
EndElement Schreibt das Endelementtag aus.
EndEntity Keine Operation.
XmlDeclaration Schreibt den XML-Deklarationsknoten aus.

Wenn sich der Reader im Anfangszustand befindet, verschiebt diese Methode den Reader an das Ende der Datei. Wenn sich der Reader bereits am Ende der Datei oder in einem geschlossenen Zustand befindet, ist diese Methode nicht betriebsbereit.

Der folgende C#-Code kopiert ein gesamtes XML-Eingabedokument in die Konsole:

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

Wenn Sie sich vom Stammknoten entfernt haben und sich an einer anderen Stelle im Dokument befinden, schreibt das folgende C#-Beispiel die Knoten ordnungsgemäß aus.

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 Leerraum zurückgegeben wird und der Writer für den Einzug der Ausgabe konfiguriert ist, WriteNode kann eine seltsame Ausgabe erzeugt werden. Sie erhalten im Wesentlichen doppelte Formatierung.

Die asynchrone Version dieser Methode finden Sie unter WriteNodeAsync.

Gilt für:

WriteNode(XPathNavigator, Boolean)

Quelle:
XmlWriter.cs
Quelle:
XmlWriter.cs
Quelle:
XmlWriter.cs

Kopiert den gesamten Inhalt des XPathNavigator-Objekts in den Writer. Die Position des XPathNavigator bleibt unverändert.

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

Der XPathNavigator, aus dem kopiert werden soll.

defattr
Boolean

true, um die Standardattribute zu kopieren, andernfalls false.

Ausnahmen

navigator ist null.

Eine XmlWriter-Methode wurde aufgerufen, bevor ein vorheriger asynchroner Vorgang abgeschlossen wurde. In diesem Fall wird InvalidOperationException mit der Meldung „Es wird bereits ein asynchroner Vorgang ausgeführt“ ausgelöst.

Beispiele

Im folgenden Beispiel wird die WriteNode -Methode verwendet, um den ersten Buchknoten aus einem Dokument zu kopieren und in die Konsole zu schreiben.

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

Im Beispiel wird die datei books.xml als Eingabe verwendet.

<?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.

Xpathnodetype WriteNode-Verhalten
Root Schreibt alle Knoten unabhängig vom Typ aus. Das heißt, der Writer nutzt die XPathNavigator und schreibt alle Knoten aus dem Stammknoten aus (einschließlich Attributen, Verarbeitungsanweisungen, Kommentaren usw.).
Element Schreibt den Elementknoten und alle Attributknoten aus.
Attribute Keine Operation. Verwenden Sie stattdessen WriteStartAttribute oder WriteAttributeString.
Text Schreibt den Textknoten.
Namespace Keine Operation. Verwenden Sie die WriteStartAttribute -Methode oder WriteAttributeString , um die Namespacedeklaration zu schreiben.
ProcessingInstruction Schreibt den Knoten der Verarbeitungsanweisung aus.
Comment Schreibt den Kommentarknoten aus.
SignificantWhitespace Schreibt den signifikanten Leerraumknoten aus.
Whitespace Schreibt den Leerraumknoten aus.

Die asynchrone Version dieser Methode finden Sie unter WriteNodeAsync.

Gilt für: