XmlWriter.WriteNode Metoda
Definice
Důležité
Některé informace platí pro předběžně vydaný produkt, který se může zásadně změnit, než ho výrobce nebo autor vydá. Microsoft neposkytuje žádné záruky, výslovné ani předpokládané, týkající se zde uváděných informací.
Zkopíruje vše od zdrojového objektu do aktuální instance zapisovače.
Přetížení
| Name | Description |
|---|---|
| WriteNode(XmlReader, Boolean) |
Při přepsání v odvozené třídě zkopíruje vše od čtenáře do zapisovače a přesune čtenáře na začátek dalšího na stejné úrovni. |
| WriteNode(XPathNavigator, Boolean) |
Zkopíruje všechno od objektu XPathNavigator do zapisovače. Pozice XPathNavigator zůstává beze změny. |
Poznámky
Asynchronní verzi této metody naleznete v tématu WriteNodeAsync.
WriteNode(XmlReader, Boolean)
- Zdroj:
- XmlWriter.cs
- Zdroj:
- XmlWriter.cs
- Zdroj:
- XmlWriter.cs
- Zdroj:
- XmlWriter.cs
- Zdroj:
- XmlWriter.cs
Při přepsání v odvozené třídě zkopíruje vše od čtenáře do zapisovače a přesune čtenáře na začátek dalšího na stejné úrovni.
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)
Parametry
- defattr
- Boolean
true chcete-li zkopírovat výchozí atributy z objektu XmlReader; v opačném případě false.
Výjimky
reader je null.
reader obsahuje neplatné znaky.
Před XmlWriter dokončením předchozí asynchronní operace byla volána metoda. V tomto případě InvalidOperationException je vyvolán zpráva "Asynchronní operace už probíhá".
Příklady
Následující příklad zapíše první a poslední uzly knihy do konzoly.
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
Příklad používá soubor , books.xmljako vstup.
<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>
Poznámky
Následující tabulka uvádí podporované typy uzlů pro tuto metodu.
| NodeType | Chování uzlu WriteNode |
|---|---|
None |
Zapíše všechny uzly bez ohledu na typ. To znamená, že zapisovač využívá a zapisuje XmlReader všechny uzly čtení včetně atributů, pokynů ke zpracování, komentářů atd. K této situaci dochází, když XmlReader je v počátečním stavu. (Vlastnost XmlReader.ReadState vrátí ReaderState.Initial). |
Element |
Zapíše uzel elementu a všechny uzly atributů. |
Attribute |
Žádná operace. Použijte WriteStartAttribute nebo WriteAttributeString místo toho. |
Text |
Zapíše textový uzel. |
CDATA |
Zapíše uzel oddílu CDATA. |
EntityReference |
Zapíše referenční uzel entity. |
ProcessingInstruction |
Zapíše uzel instrukce zpracování. |
Comment |
Zapíše uzel komentáře. |
DocumentType |
Zapíše uzel typu dokumentu. |
SignificantWhitespace |
Zapíše významný prázdný uzel. |
Whitespace |
Zapíše prázdný uzel. |
EndElement |
Zapíše značku koncového prvku. |
EndEntity |
Žádná operace. |
XmlDeclaration |
Zapíše uzel deklarace XML. |
Pokud je čtenář v počátečním stavu, tato metoda přesune čtenáře na konec souboru. Pokud je čtečka již na konci souboru nebo v uzavřeném stavu, tato metoda není funkční.
Následující kód jazyka C# zkopíruje celý vstupní dokument XML do konzoly:
XmlReader reader = XmlReader.Create(myfile);
XmlWriter writer = XmlWriter.Create(Console.Out);
writer.WriteNode(reader, false);
Pokud jste přesunuli kořenový uzel a umístíte se jinam v dokumentu, následující příklad jazyka C# správně zapíše uzly.
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);
}
Pokud je čtečka nakonfigurovaná tak, aby vracela prázdné znaky a zapisovač má nakonfigurovaný odsazení výstupu, WriteNode může způsobit podivný výstup. V podstatě budete dostávat dvojité formátování.
Asynchronní verzi této metody naleznete v tématu WriteNodeAsync.
Platí pro
WriteNode(XPathNavigator, Boolean)
- Zdroj:
- XmlWriter.cs
- Zdroj:
- XmlWriter.cs
- Zdroj:
- XmlWriter.cs
- Zdroj:
- XmlWriter.cs
- Zdroj:
- XmlWriter.cs
Zkopíruje všechno od objektu XPathNavigator do zapisovače. Pozice XPathNavigator zůstává beze změny.
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)
Parametry
- navigator
- XPathNavigator
Zkopírovat XPathNavigator .
- defattr
- Boolean
truekopírování výchozích atributů; v opačném případě . false
Výjimky
navigator je null.
Před XmlWriter dokončením předchozí asynchronní operace byla volána metoda. V tomto případě InvalidOperationException je vyvolán zpráva "Asynchronní operace už probíhá".
Příklady
Následující příklad používá metodu WriteNode ke zkopírování prvního uzlu knihy z dokumentu a jeho zápisu do konzoly.
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
V příkladu se jako vstup používá soubor books.xml.
<?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>
Poznámky
Následující tabulka uvádí podporované XPath typy uzlů pro tuto metodu.
| XPathNodeType | Chování uzlu WriteNode |
|---|---|
Root |
Zapíše všechny uzly bez ohledu na typ. To znamená, že zapisovač využívá a zapisuje XPathNavigator všechny uzly z kořenového uzlu (včetně atributů, pokynů ke zpracování, komentářů atd.). |
Element |
Zapíše uzel elementu a všechny uzly atributů. |
Attribute |
Žádná operace. Použijte WriteStartAttribute nebo WriteAttributeString místo toho. |
Text |
Zapíše textový uzel. |
Namespace |
Žádná operace. K zápisu WriteStartAttribute deklarace oboru názvů použijte metodu nebo WriteAttributeString metodu. |
ProcessingInstruction |
Zapíše uzel instrukce zpracování. |
Comment |
Zapíše uzel komentáře. |
SignificantWhitespace |
Zapíše významný prázdný uzel. |
Whitespace |
Zapíše prázdný uzel. |
Asynchronní verzi této metody naleznete v tématu WriteNodeAsync.