XmlWriter.WriteAttributes(XmlReader, Boolean) Método
Definição
Importante
Algumas informações dizem respeito a um produto pré-lançado que pode ser substancialmente modificado antes de ser lançado. A Microsoft não faz garantias, de forma expressa ou implícita, em relação à informação aqui apresentada.
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 element nó WriteAttributes , 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 > entidade que foi expandida, para garantir um documento bem formado o expandido > é substituído quando escrito por >.
Para a versão assíncrona deste método, veja WriteAttributesAsync.