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 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 > entidad que se ha expandido, para asegurarse de que un documento bien formado se reemplaza cuando > se escribe con >.
Para obtener la versión asincrónica de este método, vea WriteAttributesAsync.