XmlWriter.WriteNode Methode

Definitie

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

reader
XmlReader

De XmlReader te lezen waaruit.

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.

Van toepassing op