XmlWriter.WriteAttributes(XmlReader, Boolean) 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.
Quando substituído em uma classe derivada, grava todos os atributos localizados na posição atual no XmlReader.
public:
virtual void WriteAttributes(System::Xml::XmlReader ^ reader, bool defattr);
public virtual void WriteAttributes (System.Xml.XmlReader reader, bool defattr);
abstract member WriteAttributes : System.Xml.XmlReader * bool -> unit
override this.WriteAttributes : System.Xml.XmlReader * bool -> unit
Public Overridable Sub WriteAttributes (reader As XmlReader, defattr As Boolean)
Parâmetros
- reader
- XmlReader
O XmlReader
do qual copiar os atributos.
- defattr
- Boolean
true
para copiar os atributos padrão do XmlReader
; caso contrário, false
.
Exceções
reader
é null
.
O leitor não está posicionado em um nó element
, attribute
ou XmlDeclaration
.
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 copia todos os elementos para a saída, altera os nomes de marca para maiúsculas e copia todos os atributos inalterados.
#using <System.Xml.dll>
using namespace System;
using namespace System::IO;
using namespace System::Xml;
void main()
{
XmlReader^ reader = XmlReader::Create( L"test1.xml" );
XmlWriterSettings^ settings = gcnew XmlWriterSettings;
settings->Indent = true;
XmlWriter^ writer = XmlWriter::Create( Console::Out );
while ( reader->Read() )
{
if ( reader->NodeType == XmlNodeType::Element )
{
writer->WriteStartElement( reader->Name->ToUpper() );
writer->WriteAttributes( reader, false );
if ( reader->IsEmptyElement )
writer->WriteEndElement();
}
else
if ( reader->NodeType == XmlNodeType::EndElement )
{
writer->WriteEndElement();
}
}
writer->Close();
reader->Close();
}
using System;
using System.IO;
using System.Xml;
public class Sample {
public static void Main() {
XmlReader reader = XmlReader.Create("test1.xml");
XmlWriterSettings settings = new XmlWriterSettings();
settings.Indent = true;
XmlWriter writer = XmlWriter.Create(Console.Out);
while (reader.Read()) {
if (reader.NodeType == XmlNodeType.Element) {
writer.WriteStartElement(reader.Name.ToUpper());
writer.WriteAttributes(reader, false);
if (reader.IsEmptyElement) writer.WriteEndElement();
}
else if (reader.NodeType == XmlNodeType.EndElement) {
writer.WriteEndElement();
}
}
writer.Close();
reader.Close();
}
}
Option Strict
Option Explicit
Imports System.IO
Imports System.Xml
Public Class Sample
Public Shared Sub Main()
Dim reader As XmlReader = XmlReader.Create("test1.xml")
Dim settings As XmlWriterSettings = new XmlWriterSettings()
settings.Indent = true
Dim writer As XmlWriter = XmlWriter.Create(Console.Out)
While reader.Read()
If reader.NodeType = XmlNodeType.Element Then
writer.WriteStartElement(reader.Name.ToUpper())
writer.WriteAttributes(reader, False)
If reader.IsEmptyElement Then
writer.WriteEndElement()
End If
Else
If reader.NodeType = XmlNodeType.EndElement Then
writer.WriteEndElement()
End If
End If
End While
writer.Close()
reader.Close()
End Sub
End Class
O exemplo usa o arquivo, test1.xml
como entrada.
<test a="1" b="2">
<item c="3" d="4" e="5" f="6"/>
</test>
Comentários
Se o leitor estiver posicionado em um element
nó WriteAttributes
, copiará todos os atributos contidos. Se o leitor estiver posicionado em um attribute
nó, esse método gravará o atributo atual e o restante dos atributos até a marca de fechamento do elemento. Se o leitor estiver posicionado em um XmlDeclaration
nó, esse método gravará todos os atributos na declaração. Se o leitor estiver posicionado em qualquer outro tipo de nó, esse método gerará um XmlException.
Se esse método for chamado usando XmlValidatingReader, para garantir que qualquer conteúdo XML bem formado (que tenha sido expandido das entidades) que possa resultar em um documento inválido seja substituído quando escrito. Por exemplo, se um atributo incluir uma >
entidade que foi expandida, para garantir que um documento bem formado o > expandido seja substituído quando gravado por >
.
Para obter a versão assíncrona deste método, consulte WriteAttributesAsync.