XmlWriter.WriteNode Metod
Definition
Viktigt
En del information gäller för förhandsversionen av en produkt och kan komma att ändras avsevärt innan produkten blir allmänt tillgänglig. Microsoft lämnar inga garantier, uttryckliga eller underförstådda, avseende informationen som visas här.
Kopierar allt från källobjektet till den aktuella skrivarinstansen.
Överlagringar
| Name | Description |
|---|---|
| WriteNode(XmlReader, Boolean) |
När det åsidosättas i en härledd klass kopieras allt från läsaren till författaren och flyttar läsaren till början av nästa syskon. |
| WriteNode(XPathNavigator, Boolean) |
Kopierar allt från objektet XPathNavigator till skrivaren. Positionen för förblir XPathNavigator oförändrad. |
Kommentarer
Den asynkrona versionen av den här metoden finns i WriteNodeAsync.
WriteNode(XmlReader, Boolean)
- Källa:
- XmlWriter.cs
- Källa:
- XmlWriter.cs
- Källa:
- XmlWriter.cs
- Källa:
- XmlWriter.cs
- Källa:
- XmlWriter.cs
När det åsidosättas i en härledd klass kopieras allt från läsaren till författaren och flyttar läsaren till början av nästa syskon.
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)
Parametrar
- defattr
- Boolean
trueför att kopiera standardattributen XmlReaderfrån ; annars . false
Undantag
reader är null.
reader innehåller ogiltiga tecken.
En XmlWriter metod anropades innan en tidigare asynkron åtgärd slutfördes. I det här fallet InvalidOperationException genereras meddelandet "En asynkron åtgärd pågår redan".
Exempel
I följande exempel skrivs den första och sista boknoden ut till konsolen.
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
I exemplet används filen , books.xmlsom indata.
<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>
Kommentarer
I följande tabell visas de nodtyper som stöds för den här metoden.
| NodeType | WriteNode-beteende |
|---|---|
None |
Skriver ut alla noder oavsett typ. Det vill:et förbrukar XmlReader och skriver ut alla noder som lästs, inklusive attribut, bearbetningsinstruktioner, kommentarer och så vidare. Den här situationen uppstår när XmlReader är i ett initialt tillstånd. (Egenskapen XmlReader.ReadState returnerar ReaderState.Initial). |
Element |
Skriver ut elementnoden och eventuella attributnoder. |
Attribute |
Ingen åtgärd. Använd WriteStartAttribute eller WriteAttributeString i stället. |
Text |
Skriver ut textnoden. |
CDATA |
Skriver ut CDATA-avsnittsnoden. |
EntityReference |
Skriver ut entitetsreferensnoden. |
ProcessingInstruction |
Skriver ut bearbetningsinstruktionsnoden. |
Comment |
Skriver ut kommentarsnoden. |
DocumentType |
Skriver ut noden för dokumenttypen. |
SignificantWhitespace |
Skriver ut den betydande blankstegsnoden. |
Whitespace |
Skriver ut noden för tomt utrymme. |
EndElement |
Skriver ut taggen slutelement. |
EndEntity |
Ingen åtgärd. |
XmlDeclaration |
Skriver ut XML-deklarationsnoden. |
Om läsaren är i det inledande tillståndet flyttar den här metoden läsaren till slutet av filen. Om läsaren redan är i slutet av filen eller i ett stängt tillstånd är den här metoden inte i drift.
Följande C#-kod kopierar ett helt XML-indatadokument till konsolen:
XmlReader reader = XmlReader.Create(myfile);
XmlWriter writer = XmlWriter.Create(Console.Out);
writer.WriteNode(reader, false);
Om du har flyttat från rotnoden och är placerad någon annanstans i dokumentet skriver följande C#-exempel korrekt ut noderna.
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);
}
Om läsaren har konfigurerats för att returnera tomt utrymme och skrivaren har konfigurerats för att dra in utdata kan WriteNode det ge konstiga utdata. Du får i princip dubbel formatering.
Den asynkrona versionen av den här metoden finns i WriteNodeAsync.
Gäller för
WriteNode(XPathNavigator, Boolean)
- Källa:
- XmlWriter.cs
- Källa:
- XmlWriter.cs
- Källa:
- XmlWriter.cs
- Källa:
- XmlWriter.cs
- Källa:
- XmlWriter.cs
Kopierar allt från objektet XPathNavigator till skrivaren. Positionen för förblir XPathNavigator oförändrad.
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)
Parametrar
- navigator
- XPathNavigator
Att XPathNavigator kopiera från.
- defattr
- Boolean
trueför att kopiera standardattributen. annars . false
Undantag
navigator är null.
En XmlWriter metod anropades innan en tidigare asynkron åtgärd slutfördes. I det här fallet InvalidOperationException genereras meddelandet "En asynkron åtgärd pågår redan".
Exempel
I följande exempel används WriteNode metoden för att kopiera den första boknoden från ett dokument och skriva den till konsolen.
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
I exemplet används filen books.xml som indata.
<?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>
Kommentarer
I följande tabell visas de nodtyper som stöds XPath för den här metoden.
| XPathNodeType | WriteNode-beteende |
|---|---|
Root |
Skriver ut alla noder oavsett typ. Det vill: skrivaren använder XPathNavigator och skriver ut alla noder från rotnoden (inklusive attribut, bearbetningsinstruktioner, kommentarer och så vidare.) |
Element |
Skriver ut elementnoden och eventuella attributnoder. |
Attribute |
Ingen åtgärd. Använd WriteStartAttribute eller WriteAttributeString i stället. |
Text |
Skriver ut textnoden. |
Namespace |
Ingen åtgärd. WriteStartAttribute Använd metoden eller WriteAttributeString för att skriva namnområdesdeklarationen. |
ProcessingInstruction |
Skriver ut bearbetningsinstruktionsnoden. |
Comment |
Skriver ut kommentarsnoden. |
SignificantWhitespace |
Skriver ut den betydande blankstegsnoden. |
Whitespace |
Skriver ut noden för tomt utrymme. |
Den asynkrona versionen av den här metoden finns i WriteNodeAsync.