XmlWriter.WriteNode Méthode

Définition

Copie tout, de l'objet source vers l'instance de writer actuelle.Copies everything from the source object to the current writer instance.

Surcharges

WriteNode(XmlReader, Boolean)

En cas de substitution dans une classe dérivée, copie tout le contenu du lecteur vers le writer, puis déplace le lecteur vers le début du frère suivant.When overridden in a derived class, copies everything from the reader to the writer and moves the reader to the start of the next sibling.

WriteNode(XPathNavigator, Boolean)

Copie tout de l'objet XPathNavigator vers le writer.Copies everything from the XPathNavigator object to the writer. La position du XPathNavigator reste inchangée.The position of the XPathNavigator remains unchanged.

Remarques

Pour obtenir la version asynchrone de cette méthode, consultez WriteNodeAsync.For the asynchronous version of this method, see WriteNodeAsync.

WriteNode(XmlReader, Boolean)

En cas de substitution dans une classe dérivée, copie tout le contenu du lecteur vers le writer, puis déplace le lecteur vers le début du frère suivant.When overridden in a derived class, copies everything from the reader to the writer and moves the reader to the start of the next sibling.

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)

Paramètres

reader
XmlReader

XmlReader à lire.The XmlReader to read from.

defattr
Boolean

true pour copier les attributs par défaut à partir de XmlReader ; sinon, false.true to copy the default attributes from the XmlReader; otherwise, false.

Exceptions

reader a la valeur null.reader is null.

reader contient des caractères non valides.reader contains invalid characters.

Une méthode XmlWriter a été appelée avant la fin d’une opération asynchrone précédente.An XmlWriter method was called before a previous asynchronous operation finished. Dans ce cas, l’exception InvalidOperationException est levée avec le message « Une opération asynchrone est déjà en cours ».In this case, InvalidOperationException is thrown with the message "An asynchronous operation is already in progress."

Exemples

L’exemple suivant écrit le premier et le dernier nœuds de livre dans la console.The following example writes the first and last book nodes out to the console.

#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

L’exemple utilise le fichier, books.xml, comme entrée.The example uses the file, books.xml, as input.

<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>

Remarques

Le tableau suivant présente les types de nœuds pris en charge pour cette méthode.The following table shows the supported node types for this method.

NodeTypeNodeType Comportement de WriteNodeWriteNode Behavior
None Écrit tous les nœuds, quel que soit le type.Writes out all the nodes irrespective of type. Autrement dit, le writer consomme le XmlReader et écrit tous les nœuds lus, y compris les attributs, les instructions de traitement, les commentaires, etc.That is, the writer consumes the XmlReader and writes out all the nodes read including attributes, processing instructions, comments, and so on.

Cette situation se produit lorsque le XmlReader est dans un état initial.This situation occurs when the XmlReader is in an initial state. (La propriété XmlReader.ReadState retourne ReaderState.Initial).(The XmlReader.ReadState property returns ReaderState.Initial).
Element Écrit le nœud d’élément et tous les nœuds d’attribut.Writes out the element node and any attribute nodes.
Attribute Pas d'opération.No operation. Utilisez WriteStartAttribute ou WriteAttributeString à la place.Use WriteStartAttribute or WriteAttributeString instead.
Text Écrit le nœud de texte.Writes out the text node.
CDATA Écrit le nœud de section CDATA.Writes out the CDATA section node.
EntityReference Écrit le nœud de référence d’entité.Writes out the entity reference node.
ProcessingInstruction Écrit le nœud d’instruction de traitement.Writes out the processing instruction node.
Comment Écrit le nœud de commentaire.Writes out the comment node.
DocumentType Écrit le nœud de type de document.Writes out the document type node.
SignificantWhitespace Écrit le nœud d’espace blanc significatif.Writes out the significant white space node.
Whitespace Écrit le nœud d’espace blanc.Writes out the white space node.
EndElement Écrit la balise de l’élément de fin.Writes out the end element tag.
EndEntity Pas d'opération.No operation.
XmlDeclaration Écrit le nœud de déclaration XML.Writes out the XML declaration node.

Si le lecteur est dans l’état initial, cette méthode déplace le lecteur à la fin du fichier.If the reader is in the initial state, this method moves the reader to the end of file. Si le lecteur est déjà à la fin du fichier ou dans un état fermé, cette méthode n’est pas opérationnelle.If the reader is already at the end of file or in a closed state, this method is non-operational.

Le code C# suivant copie l’intégralité d’un document d’entrée XML sur la console :The following C# code copies an entire XML input document to the console:

XmlReader reader = XmlReader.Create(myfile);  
XmlWriter writer = XmlWriter.Create(Console.Out);  
writer.WriteNode(reader, false);  

Si vous avez quitté le nœud racine et que vous êtes positionné ailleurs dans le document, C# l’exemple suivant écrit correctement les nœuds.If you have moved off the root node and are positioned elsewhere in the document the following C# example correctly writes out the nodes.

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);  
 }  

Si le lecteur est configuré pour retourner des espaces blancs et que le writer est configuré pour mettre en retrait la sortie, WriteNode peut produire une sortie étrange.If the reader is configured to return white space and the writer has is configured to indent output, WriteNode may produce strange output. Vous obtenez essentiellement une double mise en forme.You will essentially be getting double formatting.

Pour obtenir la version asynchrone de cette méthode, consultez WriteNodeAsync.For the asynchronous version of this method, see WriteNodeAsync.

WriteNode(XPathNavigator, Boolean)

Copie tout de l'objet XPathNavigator vers le writer.Copies everything from the XPathNavigator object to the writer. La position du XPathNavigator reste inchangée.The position of the XPathNavigator remains unchanged.

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)

Paramètres

navigator
XPathNavigator

Le XPathNavigator à partir duquel effectuer la copie.The XPathNavigator to copy from.

defattr
Boolean

true pour copier les attributs par défaut ; sinon, false.true to copy the default attributes; otherwise, false.

Exceptions

navigator a la valeur null.navigator is null.

Une méthode XmlWriter a été appelée avant la fin d’une opération asynchrone précédente.An XmlWriter method was called before a previous asynchronous operation finished. Dans ce cas, l’exception InvalidOperationException est levée avec le message « Une opération asynchrone est déjà en cours ».In this case, InvalidOperationException is thrown with the message "An asynchronous operation is already in progress."

Exemples

L’exemple suivant utilise la méthode WriteNode pour copier le premier nœud book d’un document et l’écrire dans la console.The following example uses the WriteNode method to copy the first book node from a document and write it to the console.

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

L’exemple utilise le fichier books. XML comme entrée.The example uses the books.xml file as input.

<?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>

Remarques

Le tableau suivant indique les types de nœuds XPath pris en charge pour cette méthode.The following table shows the supported XPath node types for this method.

XPathNodeTypeXPathNodeType Comportement de WriteNodeWriteNode Behavior
Root Écrit tous les nœuds, quel que soit le type.Writes out all the nodes irrespective of type. Autrement dit, le writer consomme le XPathNavigator et écrit tous les nœuds à partir du nœud racine (y compris les attributs, les instructions de traitement, les commentaires, etc.).That is, the writer consumes the XPathNavigator and writes out all the nodes from the root node (including attributes, processing instructions, comments and so on.)
Element Écrit le nœud d’élément et tous les nœuds d’attribut.Writes out the element node and any attribute nodes.
Attribute Pas d'opération.No operation. Utilisez WriteStartAttribute ou WriteAttributeString à la place.Use WriteStartAttribute or WriteAttributeString instead.
Text Écrit le nœud de texte.Writes out the text node.
Namespace Pas d'opération.No operation. Utilisez la méthode WriteStartAttribute ou WriteAttributeString pour écrire la déclaration d’espace de noms.Use the WriteStartAttribute or WriteAttributeString method to write the namespace declaration.
ProcessingInstruction Écrit le nœud d’instruction de traitement.Writes out the processing instruction node.
Comment Écrit le nœud de commentaire.Writes out the comment node.
SignificantWhitespace Écrit le nœud d’espace blanc significatif.Writes out the significant white space node.
Whitespace Écrit le nœud d’espace blanc.Writes out the white space node.

Pour obtenir la version asynchrone de cette méthode, consultez WriteNodeAsync.For the asynchronous version of this method, see WriteNodeAsync.

S’applique à