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 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
- 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.xml
comme 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.