XmlWriter.WriteNode Méthode

Définition

Copie tout, de l'objet source vers l'instance de writer actuelle.

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.

WriteNode(XPathNavigator, Boolean)

Copie tout de l'objet XPathNavigator vers le writer. La position du XPathNavigator reste inchangée.

Remarques

Pour obtenir la version asynchrone de cette méthode, consultez WriteNodeAsync.

WriteNode(XmlReader, Boolean)

Source:
XmlWriter.cs
Source:
XmlWriter.cs
Source:
XmlWriter.cs

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.

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.

defattr
Boolean

true pour copier les attributs par défaut à partir de XmlReader ; sinon, false.

Exceptions

reader a la valeur null.

reader contient des caractères non valides.

Une méthode XmlWriter a été appelée avant la fin d’une opération asynchrone précédente. Dans ce cas, l’exception InvalidOperationException est levée avec le message « Une opération asynchrone est déjà en cours ».

Exemples

L’exemple suivant écrit les premier et dernier nœuds de livre dans la 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.xmlcomme entrée.

<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 montre les types de nœuds pris en charge pour cette méthode.

NodeType Comportement de WriteNode
None Écrit tous les nœuds, quel que soit leur type. Autrement dit, l’enregistreur consomme et XmlReader écrit tous les nœuds lus, y compris les attributs, les instructions de traitement, les commentaires, etc.

Cette situation se produit lorsque le XmlReader est dans un état initial. (La XmlReader.ReadState propriété retourne ReaderState.Initial).
Element Écrit le nœud d’élément et tous les nœuds d’attribut.
Attribute Pas d'opération. Utilisez WriteStartAttribute ou WriteAttributeString à la place.
Text Écrit le nœud de texte.
CDATA Écrit le nœud de section CDATA.
EntityReference Écrit le nœud de référence d’entité.
ProcessingInstruction Écrit le nœud d’instruction de traitement.
Comment Écrit le nœud de commentaire.
DocumentType Écrit le nœud de type de document.
SignificantWhitespace Écrit le nœud d’espace blanc significatif.
Whitespace Écrit le nœud d’espace blanc.
EndElement Écrit la balise d’élément de fin.
EndEntity Pas d'opération.
XmlDeclaration Écrit le nœud de déclaration XML.

Si le lecteur est dans l’état initial, cette méthode déplace le lecteur vers la fin du fichier. Si le lecteur est déjà à la fin du fichier ou dans un état fermé, cette méthode n’est pas opérationnelle.

Le code C# suivant copie un document d’entrée XML entier dans la 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, l’exemple C# suivant écrit correctement les nœuds.

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 l’enregistreur est configuré pour mettre en retrait la sortie, WriteNode peut produire une sortie étrange. Vous obtiendrez essentiellement une double mise en forme.

Pour obtenir la version asynchrone de cette méthode, consultez WriteNodeAsync.

S’applique à

WriteNode(XPathNavigator, Boolean)

Source:
XmlWriter.cs
Source:
XmlWriter.cs
Source:
XmlWriter.cs

Copie tout de l'objet XPathNavigator vers le writer. La position du XPathNavigator reste inchangée.

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.

defattr
Boolean

true pour copier les attributs par défaut ; sinon, false.

Exceptions

navigator a la valeur null.

Une méthode XmlWriter a été appelée avant la fin d’une opération asynchrone précédente. Dans ce cas, l’exception InvalidOperationException est levée avec le message « Une opération asynchrone est déjà en cours ».

Exemples

L’exemple suivant utilise la WriteNode méthode pour copier le premier nœud de livre à partir d’un document et l’écrire dans la 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.

<?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 montre les types de nœuds pris en charge XPath pour cette méthode.

XPathNodeType Comportement de WriteNode
Root Écrit tous les nœuds, quel que soit leur type. Autrement dit, l’enregistreur consomme et XPathNavigator écrit tous les nœuds du nœud racine (y compris les attributs, les instructions de traitement, les commentaires, etc.)
Element Écrit le nœud d’élément et tous les nœuds d’attribut.
Attribute Pas d'opération. Utilisez WriteStartAttribute ou WriteAttributeString à la place.
Text Écrit le nœud de texte.
Namespace Pas d'opération. Utilisez la WriteStartAttribute méthode ou WriteAttributeString pour écrire la déclaration d’espace de noms.
ProcessingInstruction Écrit le nœud d’instruction de traitement.
Comment Écrit le nœud de commentaire.
SignificantWhitespace Écrit le nœud d’espace blanc significatif.
Whitespace Écrit le nœud d’espace blanc.

Pour obtenir la version asynchrone de cette méthode, consultez WriteNodeAsync.

S’applique à