Partager via


XmlWriter.WriteNode Méthode

Définition

Copie tous les éléments de l’objet source vers l’instance de writer actuelle.

Surcharges

Nom Description
WriteNode(XmlReader, Boolean)

En cas de substitution dans une classe dérivée, copie tout du lecteur au rédacteur et déplace le lecteur au début du frère suivant.

WriteNode(XPathNavigator, Boolean)

Copie tous les éléments de l’objet XPathNavigator vers l’enregistreur. 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
Source:
XmlWriter.cs
Source:
XmlWriter.cs

En cas de substitution dans une classe dérivée, copie tout du lecteur au rédacteur et déplace le lecteur au 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 À partir duquel lire.

defattr
Boolean

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

Exceptions

reader a la valeur null.

reader contient des caractères non valides.

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

Exemples

L’exemple suivant écrit les premiers et derniers nœuds de livre dans la console.

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 WriteNode
None Écrit tous les nœuds quel que soit le type. Autrement dit, l’enregistreur consomme et XmlReader écrit tous les nœuds lus, y compris les attributs, les instructions de traitement, les commentaires, et ainsi de suite.

Cette situation se produit lorsqu’elle 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 Aucune opération. Utilisez plutôt WriteStartAttribute ou WriteAttributeString.
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 Aucune 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 à 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 déplacé 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 un espace blanc 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
Source:
XmlWriter.cs
Source:
XmlWriter.cs

Copie tous les éléments de l’objet XPathNavigator vers l’enregistreur. 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

XPathNavigator À partir duquel copier.

defattr
Boolean

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

Exceptions

navigator a la valeur null.

Une XmlWriter méthode a été appelée avant la fin d’une opération asynchrone précédente. Dans ce cas, 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 WriteNode
Root Écrit tous les nœuds quel que soit le 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, et ainsi de suite.)
Element Écrit le nœud d’élément et tous les nœuds d’attribut.
Attribute Aucune opération. Utilisez plutôt WriteStartAttribute ou WriteAttributeString.
Text Écrit le nœud de texte.
Namespace Aucune opération. Utilisez la ou WriteAttributeString la WriteStartAttribute méthode 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 à