XmlWriter.WriteAttributes(XmlReader, Boolean) Método
Definición
Importante
Parte de la información hace referencia a la versión preliminar del producto, que puede haberse modificado sustancialmente antes de lanzar la versión definitiva. Microsoft no otorga ninguna garantía, explícita o implícita, con respecto a la información proporcionada aquí.
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.xml
como 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 >
entidad que se ha expandido, para asegurarse de que un documento bien formado, el > expandido se reemplaza cuando se escribe con >
.
Para obtener la versión asincrónica de este método, vea WriteAttributesAsync.