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 individuati in corrispondenza della posizione corrente nell'oggetto 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
dal quale copiare gli attributi.
- defattr
- Boolean
true
per copiare gli attributi predefiniti dalla classe XmlReader
; in caso contrario, false
.
Eccezioni
reader
è null
.
Il lettore non è posizionato in corrispondenza di un nodo element
, attribute
o XmlDeclaration
.
È stato chiamato un metodo della classe XmlWriter prima del completamento di un'operazione asincrona precedente. In questo caso, viene generata l'eccezione InvalidOperationException con il messaggio "È già in corso un'operazione asincrona".
Esempio
L'esempio seguente copia tutti gli elementi nell'output, modifica i nomi dei tag in maiuscolo e copia tutti gli attributi invariati.
#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
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 in qualsiasi altro tipo di nodo questo metodo genera un XmlExceptionoggetto .
Se questo metodo viene chiamato usando XmlValidatingReader, per garantire un contenuto XML ben formato (espanso dalle entità) che potrebbe comportare la sostituzione di un documento non valido quando viene scritto. Ad esempio, se un attributo include un'entità >
espansa, per assicurarsi che un documento ben formato > venga sostituito quando viene scritto con >
.
Per la versione asincrona di questo metodo, vedere WriteAttributesAsync.