XmlWriter.WriteAttributes(XmlReader, Boolean) Methode

Definition

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 &gt; Entität enthält, die erweitert wurde, um sicherzustellen, dass ein wohlgeformtes Dokument ersetzt wird, wenn es > ausgeschrieben wird &gt;.

Die asynchrone Version dieser Methode finden Sie unter WriteAttributesAsync.

Gilt für: