XmlWriter.WriteAttributes(XmlReader, Boolean) Metodo
Definizione
Importante
Alcune informazioni sono relative alla release non definitiva del prodotto, che potrebbe subire modifiche significative prima della release definitiva. Microsoft non riconosce alcuna garanzia, espressa o implicita, in merito alle informazioni qui fornite.
Quando sottoposto a override in una classe derivata, scrive tutti gli attributi trovati nella posizione corrente in 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)
Parametri
- reader
- XmlReader
Oggetto XmlReader da cui copiare gli attributi.
- defattr
- Boolean
true per copiare gli attributi predefiniti da XmlReader; in caso contrario, false.
Eccezioni
reader è null.
Il lettore non è posizionato in un elementnodo o XmlDeclarationattribute .
È stato chiamato un XmlWriter metodo prima del completamento di un'operazione asincrona precedente. In questo caso, InvalidOperationException viene generata con il messaggio "Un'operazione asincrona è già in corso".
Esempio
Nell'esempio seguente tutti gli elementi vengono copiati nell'output, i nomi dei tag vengono modificati in maiuscolo e tutti gli attributi vengono copiati senza modifiche.
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
Nell'esempio viene usato il file , test1.xml, come input.
<test a="1" b="2">
<item c="3" d="4" e="5" f="6"/>
</test>
Commenti
Se il lettore è posizionato in un element nodo WriteAttributes copia tutti gli attributi contenuti. Se il lettore è posizionato in un attribute nodo, questo metodo scrive l'attributo corrente, quindi il resto degli attributi fino al tag di chiusura dell'elemento. Se il lettore è posizionato in un XmlDeclaration nodo, questo metodo scrive tutti gli attributi nella dichiarazione. Se il lettore è posizionato su qualsiasi altro tipo di nodo, questo metodo genera un'eccezione XmlException.
Se questo metodo viene chiamato utilizzando XmlValidatingReader, per assicurarsi che qualsiasi contenuto XML ben formato (espanso dalle entità) che potrebbe comportare la sostituzione di un documento non valido durante la scrittura. Ad esempio, se un attributo include un'entità > espansa, per garantire che un documento ben formato venga sostituito quando viene > scritto con >.
Per la versione asincrona di questo metodo, vedere WriteAttributesAsync.