XmlWriter.WriteNode Méthode
Définition
Important
Certaines informations portent sur la préversion du produit qui est susceptible d’être en grande partie modifiée avant sa publication. Microsoft exclut toute garantie, expresse ou implicite, concernant les informations fournies ici.
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
- 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.