Freigeben über


XmlWriter.WriteNode Methode

Definition

Kopiert alles vom Quellobjekt in die aktuelle Writer-Instanz.

Überlädt

Name Beschreibung
WriteNode(XmlReader, Boolean)

Wenn sie in einer abgeleiteten Klasse überschrieben wird, kopiert alles vom Leser in den Autor und verschiebt den Leser an den Anfang des nächsten gleichgeordneten Typs.

WriteNode(XPathNavigator, Boolean)

Kopiert alles vom XPathNavigator Objekt in den Autor. Die Position der 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
Quelle:
XmlWriter.cs
Quelle:
XmlWriter.cs

Wenn sie in einer abgeleiteten Klasse überschrieben wird, kopiert alles vom Leser in den Autor und verschiebt den Leser an den Anfang des nächsten gleichgeordneten Typs.

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 zu lesende Text.

defattr
Boolean

true um die Standardattribute aus dem XmlReader; andernfalls falsezu kopieren.

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 InvalidOperationException wird die Meldung "Ein asynchroner Vorgang wird bereits ausgeführt" ausgelöst.

Beispiele

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

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

In der folgenden Tabelle sind die unterstützten Knotentypen für diese Methode aufgeführt.

NodeType WriteNode-Verhalten
None Schreibt alle Knoten unabhängig vom Typ aus. Das heißt, der Autor verwendet und XmlReader schreibt alle Knoten, die gelesen werden, einschließlich Attribute, Verarbeitungsanweisungen, Kommentare usw.

Diese Situation tritt auf, wenn sich der XmlReader Zustand im Anfangszustand befindet. (Die XmlReader.ReadState Eigenschaft gibt zurück ReaderState.Initial).
Element Schreibt den Elementknoten und alle Attributknoten aus.
Attribute Kein Vorgang. Verwenden Sie stattdessen WriteStartAttribute oder WriteAttributeString.
Text Schreibt den Textknoten aus.
CDATA Schreibt den CDATA-Abschnittsknoten aus.
EntityReference Schreibt den Entitätsverweisknoten aus.
ProcessingInstruction Schreibt den Verarbeitungsanweisungsknoten 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 Kein Vorgang.
XmlDeclaration Schreibt den XML-Deklarationsknoten aus.

Wenn sich der Leser im Anfangszustand befindet, verschiebt diese Methode den Leser an das Ende der Datei. Wenn sich der Leser 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 den Stammknoten entfernt haben und an anderer Stelle im Dokument positioniert sind, schreibt das folgende C#-Beispiel die Knoten richtig 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 Leser so konfiguriert ist, dass Leerraum zurückgegeben wird und der Autor für die Einzugsausgabe konfiguriert ist, WriteNode kann eine seltsame Ausgabe erzeugt werden. Im Wesentlichen erhalten Sie doppelte Formatierungen.

Die asynchrone Version dieser Methode finden Sie unter WriteNodeAsync.

Gilt für:

WriteNode(XPathNavigator, Boolean)

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

Kopiert alles vom XPathNavigator Objekt in den Autor. Die Position der 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

Das XPathNavigator zu kopierende Element.

defattr
Boolean

trueum 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 InvalidOperationException wird die Meldung "Ein asynchroner Vorgang wird bereits 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 books.xml Datei 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

In der folgenden Tabelle sind die unterstützten XPath Knotentypen für diese Methode aufgeführt.

Xpathnodetype WriteNode-Verhalten
Root Schreibt alle Knoten unabhängig vom Typ aus. Das heißt, der Writer verwendet und XPathNavigator schreibt alle Knoten vom Stammknoten aus (einschließlich Attributen, Verarbeitungsanweisungen, Kommentare usw.).
Element Schreibt den Elementknoten und alle Attributknoten aus.
Attribute Kein Vorgang. Verwenden Sie stattdessen WriteStartAttribute oder WriteAttributeString.
Text Schreibt den Textknoten aus.
Namespace Kein Vorgang. Verwenden Sie die WriteStartAttribute Namespacedeklaration oder WriteAttributeString -methode, um die Namespacedeklaration zu schreiben.
ProcessingInstruction Schreibt den Verarbeitungsanweisungsknoten 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: