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.
Wenn sie in einer abgeleiteten Klasse überschrieben wird, werden alle Attribute, die an der aktuellen Position in der 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
Die XmlReader , von der die Attribute kopiert werden sollen.
- defattr
- Boolean
true um die Standardattribute aus dem XmlReader; andernfalls falsezu kopieren.
Ausnahmen
reader ist null.
Der Reader wird nicht auf einem Knoten element oder attribute auf einem XmlDeclarationKnoten positioniert.
Eine XmlWriter Methode wurde aufgerufen, bevor ein vorheriger asynchroner Vorgang abgeschlossen wurde. In diesem Fall InvalidOperationException wird die Meldung "Ein asynchroner Vorgang wird bereits 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;
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.xmlEingabe 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 das Element schließende Tag. Wenn der Leser auf einem XmlDeclaration Knoten positioniert ist, schreibt diese Methode alle Attribute in der Deklaration. Wenn der Leser auf einem anderen Knotentyp positioniert ist, löst diese Methode eine XmlException.
Wenn diese Methode verwendet XmlValidatingReaderwird, um sicherzustellen, dass wohlgeformte XML-Inhalte (die aus den Entitäten erweitert wurden), die zu einem ungültigen Dokument führen könnten, beim Schreiben ersetzt werden. Wenn beispielsweise ein Attribut eine > Entität enthält, die erweitert wurde, um sicherzustellen, dass ein wohlgeformtes Dokument ersetzt wird, wenn es > ausgeschrieben wird >.
Die asynchrone Version dieser Methode finden Sie unter WriteAttributesAsync.