XmlWriter.WriteAttributes(XmlReader, Boolean) Método

Definição

Quando sobrescrito numa classe derivada, escreve todos os atributos encontrados na posição atual do 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

De onde XmlReader 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 num element, attribute ou XmlDeclaration nó.

Um XmlWriter método era chamado antes de uma operação assíncrona anterior terminar. Neste caso, InvalidOperationException é lançado com a mensagem "Uma operação assíncrona já está em curso."

Exemplos

O exemplo seguinte copia todos os elementos para a saída, altera os nomes das etiquetas para maiúsculas e copia todos os atributos inalterados.

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 ficheiro , test1.xmlcomo entrada.

<test a="1" b="2">
    <item c="3" d="4" e="5" f="6"/>
</test>

Observações

Se o leitor estiver posicionado num elementWriteAttributes , copia todos os atributos contidos. Se o leitor estiver posicionado num attribute nó, este método escreve o atributo atual, depois os restantes atributos até à etiqueta de fecho do elemento. Se o leitor estiver posicionado num XmlDeclaration nó, este método escreve todos os atributos na declaração. Se o leitor estiver posicionado em qualquer outro tipo de nó, este método lança um XmlException.

Se este método for chamado usando XmlValidatingReader, para garantir um XML bem formado, qualquer conteúdo (que tenha sido expandido a partir das entidades) que possa resultar num documento inválido é substituído quando escrito. Por exemplo, se um atributo incluir uma &gt; entidade que foi expandida, para garantir um documento bem formado o expandido > é substituído quando escrito por &gt;.

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

Aplica-se a