XmlWriter.WriteAttributes(XmlReader, Boolean) Metod

Definition

När du åsidosättas i en härledd klass skriver du ut alla attribut som finns på den aktuella positionen i 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)

Parametrar

reader
XmlReader

Från XmlReader vilken attributen ska kopieras.

defattr
Boolean

trueför att kopiera standardattributen XmlReaderfrån ; annars . false

Undantag

reader är null.

Läsaren är inte placerad på en element, attribute eller XmlDeclaration nod.

En XmlWriter metod anropades innan en tidigare asynkron åtgärd slutfördes. I det här fallet InvalidOperationException genereras meddelandet "En asynkron åtgärd pågår redan".

Exempel

I följande exempel kopieras alla element till utdata, taggnamnen ändras till versaler och alla attribut kopieras oförändrade.

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

I exemplet används filen , test1.xmlsom indata.

<test a="1" b="2">
    <item c="3" d="4" e="5" f="6"/>
</test>

Kommentarer

Om läsaren är placerad på en element nod WriteAttributes kopieras alla inneslutna attribut. Om läsaren är placerad på en attribute nod skriver den här metoden det aktuella attributet och resten av attributen tills elementet stänger taggen. Om läsaren är placerad på en XmlDeclaration nod skriver den här metoden alla attribut i deklarationen. Om läsaren är placerad på någon annan nodtyp genererar den här metoden en XmlException.

Om den här metoden anropas med , XmlValidatingReaderför att säkerställa välformulerad XML ersätts allt innehåll (som har expanderats från entiteterna) som kan leda till att ett ogiltigt dokument ersätts när det skrivs. Om ett attribut till exempel innehåller en entitet &gt; som har expanderats, för att säkerställa att ett välformulerat dokument ersätts det expanderade > när det skrivs ut med &gt;.

Den asynkrona versionen av den här metoden finns i WriteAttributesAsync.

Gäller för