XmlWriter.WriteAttributes(XmlReader, Boolean) Methode
Definition
Wichtig
Einige Informationen beziehen sich auf Vorabversionen, die vor dem Release ggf. grundlegend überarbeitet werden. Microsoft übernimmt hinsichtlich der hier bereitgestellten Informationen keine Gewährleistungen, seien sie ausdrücklich oder konkludent.
Schreibt beim Überschreiben in einer abgeleiteten Klasse sämtliche an der aktuellen Position gefundenen Attribute in den 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)
Parameter
- reader
- XmlReader
Der XmlReader
, aus dem die Attribute kopiert werden sollen.
- defattr
- Boolean
true
, um die Standardattribute aus dem XmlReader
zu kopieren, andernfalls false
.
Ausnahmen
reader
ist null
.
Der Reader ist nicht auf einem der Knoten element
, attribute
oder XmlDeclaration
positioniert.
Eine XmlWriter-Methode wurde aufgerufen, bevor ein vorheriger asynchroner Vorgang abgeschlossen wurde. In diesem Fall wird InvalidOperationException mit der Meldung „Es wird bereits ein asynchroner Vorgang ausgeführt“ ausgelöst.
Beispiele
Im folgenden Beispiel werden alle Elemente in die Ausgabe kopiert, die Tagnamen in Großbuchstaben geändert und alle Attribute unverändert kopiert.
#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
Im Beispiel wird die Datei als test1.xml
Eingabe verwendet.
<test a="1" b="2">
<item c="3" d="4" e="5" f="6"/>
</test>
Hinweise
Wenn der Leser auf einem element
Knoten WriteAttributes
positioniert ist, werden alle enthaltenen Attribute kopiert. Wenn der Leser auf einem attribute
Knoten positioniert ist, schreibt diese Methode das aktuelle Attribut, dann die restlichen Attribute bis zum Schließen des Elements. Wenn der Leser auf einem XmlDeclaration
Knoten positioniert ist, schreibt diese Methode alle Attribute in der Deklaration. Wenn der Reader auf einem anderen Knotentyp positioniert ist, löst diese Methode eine XmlException.
Wenn diese Methode mithilfe von "using XmlValidatingReader" aufgerufen wird, um sicherzustellen, dass alle inhalte (die aus den Entitäten erweitert wurden), die zu einem ungültigen Dokument führen können, wird beim Schreiben ersetzt. Wenn beispielsweise ein Attribut eine >
Entität enthält, die erweitert wurde, um sicherzustellen, dass ein gut gebildetes Dokument, das erweiterte >, ersetzt wird, wenn er durch >
geschrieben wird.
Die asynchrone Version dieser Methode finden Sie unter WriteAttributesAsync.