XmlWriter.WriteAttributes(XmlReader, Boolean) Methode

Definition

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.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 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 &gt; Entität enthält, die erweitert wurde, um sicherzustellen, dass ein gut gebildetes Dokument, das erweiterte >, ersetzt wird, wenn er durch &gt;geschrieben wird.

Die asynchrone Version dieser Methode finden Sie unter WriteAttributesAsync.

Gilt für