XmlWriter.WriteNode Methode
Definitie
Belangrijk
Bepaalde informatie heeft betrekking op een voorlopige productversie die aanzienlijk kan worden gewijzigd voordat deze wordt uitgebracht. Microsoft biedt geen enkele expliciete of impliciete garanties met betrekking tot de informatie die hier wordt verstrekt.
Hiermee kopieert u alles van het bronobject naar het huidige schrijverexemplaren.
Overloads
| Name | Description |
|---|---|
| WriteNode(XmlReader, Boolean) |
Wanneer deze wordt overschreven in een afgeleide klasse, kopieert u alles van de lezer naar de schrijver en verplaatst u de lezer naar het begin van het volgende niveau. |
| WriteNode(XPathNavigator, Boolean) |
Kopieert alles van het XPathNavigator object naar de schrijver. De positie van de XPathNavigator functie blijft ongewijzigd. |
Opmerkingen
Zie voor de asynchrone versie van deze methode WriteNodeAsync.
WriteNode(XmlReader, Boolean)
Wanneer deze wordt overschreven in een afgeleide klasse, kopieert u alles van de lezer naar de schrijver en verplaatst u de lezer naar het begin van het volgende niveau.
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)
Parameters
- defattr
- Boolean
trueom de standaardkenmerken te kopiëren van de XmlReader; anders. false
Uitzonderingen
reader is null.
reader bevat ongeldige tekens.
Er XmlWriter is een methode aangeroepen voordat een vorige asynchrone bewerking is voltooid. In dit geval InvalidOperationException wordt het bericht 'Er wordt al een asynchrone bewerking uitgevoerd'.
Voorbeelden
In het volgende voorbeeld worden de eerste en laatste boekknooppunten naar de console geschreven.
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
In het voorbeeld wordt het bestand als books.xmlinvoer gebruikt.
<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>
Opmerkingen
In de volgende tabel ziet u de ondersteunde knooppunttypen voor deze methode.
| NodeType | Gedrag van WriteNode |
|---|---|
None |
Hiermee worden alle knooppunten weggeschreven, ongeacht het type. Dat wil zeggen dat de schrijver alle XmlReader knooppunten gebruikt en wegschrijft, inclusief kenmerken, verwerkingsinstructies, opmerkingen, enzovoort. Deze situatie treedt op wanneer de XmlReader initiële status zich bevindt. (De XmlReader.ReadState eigenschap retourneert ReaderState.Initial). |
Element |
Hiermee worden het elementknooppunt en eventuele kenmerkknooppunten weggeschreven. |
Attribute |
Geen bewerking. Gebruik WriteStartAttribute of WriteAttributeString in plaats daarvan. |
Text |
Hiermee wordt het tekstknooppunt weggeschreven. |
CDATA |
Hiermee wordt het CDATA-sectieknooppunt weggeschreven. |
EntityReference |
Hiermee wordt het verwijzingsknooppunt voor entiteiten weggeschreven. |
ProcessingInstruction |
Hiermee wordt het verwerkingsinstructieknooppunt weggeschreven. |
Comment |
Hiermee wordt het opmerkingenknooppunt weggeschreven. |
DocumentType |
Hiermee wordt het documenttypeknooppunt weggeschreven. |
SignificantWhitespace |
Hiermee wordt het significante witruimteknooppunt weggeschreven. |
Whitespace |
Hiermee wordt het witruimteknooppunt weggeschreven. |
EndElement |
Hiermee wordt de eindelementtag weggeschreven. |
EndEntity |
Geen bewerking. |
XmlDeclaration |
Hiermee wordt het XML-declaratieknooppunt weggeschreven. |
Als de lezer de oorspronkelijke status heeft, verplaatst deze methode de lezer naar het einde van het bestand. Als de lezer zich al aan het einde van het bestand of in een gesloten toestand bevindt, is deze methode niet operationeel.
Met de volgende C#-code wordt een volledig XML-invoerdocument naar de console gekopieerd:
XmlReader reader = XmlReader.Create(myfile);
XmlWriter writer = XmlWriter.Create(Console.Out);
writer.WriteNode(reader, false);
Als u het hoofdknooppunt hebt verplaatst en ergens anders in het document wordt geplaatst, worden de knooppunten correct weggeschreven in het volgende C#-voorbeeld.
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);
}
Als de lezer is geconfigureerd om witruimte te retourneren en de schrijver is geconfigureerd voor het inspringen van uitvoer, WriteNode kan dit vreemde uitvoer opleveren. U krijgt in wezen dubbele opmaak.
Zie voor de asynchrone versie van deze methode WriteNodeAsync.
Van toepassing op
WriteNode(XPathNavigator, Boolean)
Kopieert alles van het XPathNavigator object naar de schrijver. De positie van de XPathNavigator functie blijft ongewijzigd.
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)
Parameters
- navigator
- XPathNavigator
De XPathNavigator waaruit moet worden gekopieerd.
- defattr
- Boolean
true om de standaardkenmerken te kopiëren; anders, false.
Uitzonderingen
navigator is null.
Er XmlWriter is een methode aangeroepen voordat een vorige asynchrone bewerking is voltooid. In dit geval InvalidOperationException wordt het bericht 'Er wordt al een asynchrone bewerking uitgevoerd'.
Voorbeelden
In het volgende voorbeeld wordt de WriteNode methode gebruikt om het eerste boekknooppunt uit een document te kopiëren en naar de console te schrijven.
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
In het voorbeeld wordt het books.xml-bestand als invoer gebruikt.
<?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>
Opmerkingen
In de volgende tabel ziet u de ondersteunde XPath knooppunttypen voor deze methode.
| XPathNodeType | Gedrag van WriteNode |
|---|---|
Root |
Hiermee worden alle knooppunten weggeschreven, ongeacht het type. Dat wil zeggen dat de schrijver alle XPathNavigator knooppunten uit het hoofdknooppunt verbruikt en wegschrijft (inclusief kenmerken, verwerkingsinstructies, opmerkingen enzovoort.) |
Element |
Hiermee worden het elementknooppunt en eventuele kenmerkknooppunten weggeschreven. |
Attribute |
Geen bewerking. Gebruik WriteStartAttribute of WriteAttributeString in plaats daarvan. |
Text |
Hiermee wordt het tekstknooppunt weggeschreven. |
Namespace |
Geen bewerking. Gebruik de WriteStartAttribute of WriteAttributeString methode om de naamruimtedeclaratie te schrijven. |
ProcessingInstruction |
Hiermee wordt het verwerkingsinstructieknooppunt weggeschreven. |
Comment |
Hiermee wordt het opmerkingenknooppunt weggeschreven. |
SignificantWhitespace |
Hiermee wordt het significante witruimteknooppunt weggeschreven. |
Whitespace |
Hiermee wordt het witruimteknooppunt weggeschreven. |
Zie voor de asynchrone versie van deze methode WriteNodeAsync.