Comparteix a través de


XmlWriter.WriteAttributes(XmlReader, Boolean) Método

Definición

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

XmlReader del que se van a copiar los atributos.

defattr
Boolean

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

Excepciones

reader es null.

El lector no está en ningún nodo element, attribute o XmlDeclaration.

Se llamó un método XmlWriter antes de que se termine una operación asincrónica anterior. En este caso, se genera InvalidOperationException con el mensaje “Ya hay una operación asincrónica en curso”.

Ejemplos

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

#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

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, 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 xml tiene el formato correcto cualquier contenido (que se ha expandido desde 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, el > expandido se reemplaza cuando se escribe con &gt;.

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

Se aplica a