Compartilhar via


XmlWriter.WriteAttributes(XmlReader, Boolean) Método

Definição

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.xmlcomo 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 elementWriteAttributes , 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 &gt; entidade que foi expandida, para garantir que um documento bem formado o > expandido seja substituído quando gravado por &gt;.

Para obter a versão assíncrona deste método, consulte WriteAttributesAsync.

Aplica-se a