XmlWriter.WriteNode Método
Definição
Importante
Algumas informações se referem a produtos de pré-lançamento que podem ser substancialmente modificados antes do lançamento. A Microsoft não oferece garantias, expressas ou implícitas, das informações aqui fornecidas.
Copia tudo do objeto de origem para a instância atual do gravador.
Sobrecargas
WriteNode(XmlReader, Boolean) |
Quando substituído em uma classe derivada, copia tudo do leitor no gravador e move o leitor para o início do próximo irmão. |
WriteNode(XPathNavigator, Boolean) |
Copia tudo do objeto XPathNavigator no gravador. A posição do XPathNavigator permanece inalterada. |
Comentários
Para obter a versão assíncrona deste método, consulte WriteNodeAsync.
WriteNode(XmlReader, Boolean)
Quando substituído em uma classe derivada, copia tudo do leitor no gravador e move o leitor para o início do próximo irmão.
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)
Parâmetros
- defattr
- Boolean
true
para copiar os atributos padrão do XmlReader
; caso contrário, false
.
Exceções
reader
é null
.
reader
contém caracteres inválidos.
Um método XmlWriter foi chamado antes do término de uma operação assíncrona anterior. Nesse caso, InvalidOperationException será gerado com a mensagem “Uma operação assíncrona já está em andamento”.
Exemplos
O exemplo a seguir grava os nós do primeiro e último livro no 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
O exemplo usa o arquivo, books.xml
como entrada.
<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>
Comentários
A tabela a seguir mostra os tipos de nó com suporte para este método.
NodeType | Comportamento de WriteNode |
---|---|
None |
Grava todos os nós independentemente do tipo. Ou seja, o gravador consome XmlReader e grava todos os nós lidos, incluindo atributos, instruções de processamento, comentários e assim por diante. Essa situação ocorre quando o XmlReader estado inicial está em estado inicial. (A XmlReader.ReadState propriedade retorna ReaderState.Initial ). |
Element |
Grava o nó de elemento e quaisquer nós de atributo. |
Attribute |
Sem operação. Use WriteStartAttribute ou WriteAttributeString em vez disso. |
Text |
Remove o nó de texto. |
CDATA |
remove o nó da seção CDATA. |
EntityReference |
Grava o nó de referência da entidade. |
ProcessingInstruction |
Grava o nó de instrução de processamento. |
Comment |
Grava o nó de comentário. |
DocumentType |
Grava o nó de tipo de documento. |
SignificantWhitespace |
Grava o nó de espaço em branco significativo. |
Whitespace |
Grava o nó de espaço em branco. |
EndElement |
Grava a marca do elemento final. |
EndEntity |
Sem operação. |
XmlDeclaration |
Grava o nó de declaração XML. |
Se o leitor estiver no estado inicial, esse método moverá o leitor para o final do arquivo. Se o leitor já estiver no final do arquivo ou em um estado fechado, esse método não estará operacional.
O código C# a seguir copia um documento de entrada XML inteiro para o console:
XmlReader reader = XmlReader.Create(myfile);
XmlWriter writer = XmlWriter.Create(Console.Out);
writer.WriteNode(reader, false);
Se você tiver saído do nó raiz e estiver posicionado em outro lugar no documento, o exemplo de C# a seguir gravará corretamente os nós.
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);
}
Se o leitor estiver configurado para retornar espaço em branco e o gravador estiver configurado para saída de recuo, WriteNode
poderá produzir uma saída estranha. Você estará essencialmente recebendo formatação dupla.
Para obter a versão assíncrona deste método, consulte WriteNodeAsync.
Aplica-se a
WriteNode(XPathNavigator, Boolean)
Copia tudo do objeto XPathNavigator no gravador. A posição do XPathNavigator permanece inalterada.
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)
Parâmetros
- navigator
- XPathNavigator
O XPathNavigator do qual copiar.
- defattr
- Boolean
true
para copiar os atributos padrão; caso contrário, false
.
Exceções
navigator
é null
.
Um método XmlWriter foi chamado antes do término de uma operação assíncrona anterior. Nesse caso, InvalidOperationException será gerado com a mensagem “Uma operação assíncrona já está em andamento”.
Exemplos
O exemplo a seguir usa o WriteNode método para copiar o primeiro nó do livro de um documento e gravá-lo no 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
O exemplo usa o arquivo books.xml como entrada.
<?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>
Comentários
A tabela a seguir mostra os tipos de nó com XPath
suporte para este método.
Xpathnodetype | Comportamento de WriteNode |
---|---|
Root |
Grava todos os nós independentemente do tipo. Ou seja, o gravador consome XPathNavigator e grava todos os nós do nó raiz (incluindo atributos, instruções de processamento, comentários e assim por diante).) |
Element |
Grava o nó de elemento e quaisquer nós de atributo. |
Attribute |
Sem operação. Use WriteStartAttribute ou WriteAttributeString em vez disso. |
Text |
Remove o nó de texto. |
Namespace |
Sem operação. Use o método ou WriteAttributeString o WriteStartAttribute método para gravar a declaração de namespace. |
ProcessingInstruction |
Grava o nó de instrução de processamento. |
Comment |
Grava o nó de comentário. |
SignificantWhitespace |
Grava o nó de espaço em branco significativo. |
Whitespace |
Grava o nó de espaço em branco. |
Para obter a versão assíncrona deste método, consulte WriteNodeAsync.