XmlWriter.WriteAttributes(XmlReader, Boolean) Metodo

Definizione

Quando sottoposto a override in una classe derivata, scrive tutti gli attributi trovati nella posizione corrente in 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)

Parametri

reader
XmlReader

Oggetto XmlReader da cui copiare gli attributi.

defattr
Boolean

true per copiare gli attributi predefiniti da XmlReader; in caso contrario, false.

Eccezioni

reader è null.

Il lettore non è posizionato in un elementnodo o XmlDeclarationattribute .

È stato chiamato un XmlWriter metodo prima del completamento di un'operazione asincrona precedente. In questo caso, InvalidOperationException viene generata con il messaggio "Un'operazione asincrona è già in corso".

Esempio

Nell'esempio seguente tutti gli elementi vengono copiati nell'output, i nomi dei tag vengono modificati in maiuscolo e tutti gli attributi vengono copiati senza modifiche.

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

Nell'esempio viene usato il file , test1.xml, come input.

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

Commenti

Se il lettore è posizionato in un element nodo WriteAttributes copia tutti gli attributi contenuti. Se il lettore è posizionato in un attribute nodo, questo metodo scrive l'attributo corrente, quindi il resto degli attributi fino al tag di chiusura dell'elemento. Se il lettore è posizionato in un XmlDeclaration nodo, questo metodo scrive tutti gli attributi nella dichiarazione. Se il lettore è posizionato su qualsiasi altro tipo di nodo, questo metodo genera un'eccezione XmlException.

Se questo metodo viene chiamato utilizzando XmlValidatingReader, per assicurarsi che qualsiasi contenuto XML ben formato (espanso dalle entità) che potrebbe comportare la sostituzione di un documento non valido durante la scrittura. Ad esempio, se un attributo include un'entità &gt; espansa, per garantire che un documento ben formato venga sostituito quando viene > scritto con &gt;.

Per la versione asincrona di questo metodo, vedere WriteAttributesAsync.

Si applica a