XmlWriter.WriteAttributes(XmlReader, Boolean) Método

Definición

Cuando se invalida en una clase derivada, escribe todos los atributos encontrados en la posición actual de 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

del XmlReader que se van a copiar los atributos.

defattr
Boolean

true para copiar los atributos predeterminados de XmlReader; en caso contrario, false.

Excepciones

reader es null.

El lector no está colocado en un elementnodo o attributeXmlDeclaration .

Se llamó a un XmlWriter método antes de que finalice una operación asincrónica anterior. En este caso, InvalidOperationException se produce con el mensaje "Una operación asincrónica ya está en curso".

Ejemplos

En el ejemplo siguiente se copian todos los elementos en la salida, se cambian los nombres de etiqueta en mayúsculas y se copian todos los atributos sin cambios.

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

En el ejemplo se usa el archivo , test1.xmlcomo entrada.

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

Comentarios

Si el lector se coloca en un element nodo WriteAttributes copia todos los atributos contenidos. Si el lector se coloca en un attribute nodo, este método escribe el atributo actual y, a continuación, el resto de los atributos hasta la etiqueta de cierre del elemento. Si el lector se coloca en un XmlDeclaration nodo, este método escribe todos los atributos de la declaración. Si el lector se coloca en cualquier otro tipo de nodo, este método produce una XmlExceptionexcepción .

Si se llama a este método mediante XmlValidatingReader, para asegurarse de que cualquier contenido xml correcto (que se ha expandido de las entidades) que podría dar lugar a que un documento no válido se reemplace cuando se escribe. Por ejemplo, si un atributo incluye una &gt; entidad que se ha expandido, para asegurarse de que un documento bien formado se reemplaza cuando > se escribe con &gt;.

Para obtener la versión asincrónica de este método, vea WriteAttributesAsync.

Se aplica a