XmlWriter.WriteAttributes(XmlReader, Boolean) Methode

Definitie

Wanneer deze worden overschreven in een afgeleide klasse, schrijft u alle kenmerken uit die op de huidige positie in de XmlReaderklasse zijn gevonden.

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)

Parameters

reader
XmlReader

De XmlReader waaruit de kenmerken moeten worden gekopieerd.

defattr
Boolean

trueom de standaardkenmerken te kopiƫren van de XmlReader; anders. false

Uitzonderingen

reader is null.

De lezer bevindt zich niet op een elementof attributeXmlDeclaration knooppunt.

Er XmlWriter is een methode aangeroepen voordat een vorige asynchrone bewerking is voltooid. In dit geval InvalidOperationException wordt het bericht 'Er wordt al een asynchrone bewerking uitgevoerd'.

Voorbeelden

In het volgende voorbeeld worden alle elementen gekopieerd naar de uitvoer, worden de tagnamen gewijzigd in hoofdletters en worden alle kenmerken ongewijzigd gekopieerd.

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

In het voorbeeld wordt het bestand als test1.xmlinvoer gebruikt.

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

Opmerkingen

Als de lezer op een element knooppunt WriteAttributes wordt weergegeven, worden alle ingesloten kenmerken gekopieerd. Als de lezer op een attribute knooppunt wordt weergegeven, schrijft deze methode het huidige kenmerk en vervolgens de rest van de kenmerken totdat de tag voor het sluiten van elementen wordt gesloten. Als de lezer op een XmlDeclaration knooppunt staat, schrijft deze methode alle kenmerken in de declaratie. Als de lezer op een ander knooppunttype staat, genereert deze methode een XmlException.

Als deze methode wordt aangeroepen met behulp XmlValidatingReadervan , om ervoor te zorgen dat goed opgemaakte XML-inhoud (die is uitgebreid van de entiteiten) die ertoe kunnen leiden dat een ongeldig document wordt vervangen wanneer het wordt geschreven. Als een kenmerk bijvoorbeeld een &gt; entiteit bevat die is uitgevouwen, om ervoor te zorgen dat een goed gevormd document wordt vervangen wanneer deze > wordt weggeschreven door &gt;.

Zie voor de asynchrone versie van deze methode WriteAttributesAsync.

Van toepassing op