XmlWriter.WriteNode Methode
Definition
Wichtig
Einige Informationen beziehen sich auf Vorabversionen, die vor dem Release ggf. grundlegend überarbeitet werden. Microsoft übernimmt hinsichtlich der hier bereitgestellten Informationen keine Gewährleistungen, seien sie ausdrücklich oder konkludent.
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
- 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.