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