XmlWriter.WriteAttributes(XmlReader, Boolean) Metodo

Definizione

Quando sottoposto a override in una classe derivata, scrive tutti gli attributi individuati in corrispondenza della posizione corrente nell'oggetto 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 dal quale copiare gli attributi.

defattr
Boolean

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

Eccezioni

reader è null.

Il lettore non è posizionato in corrispondenza di un nodo element, attribute o XmlDeclaration.

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

Esempio

L'esempio seguente copia tutti gli elementi nell'output, modifica i nomi dei tag in maiuscolo e copia tutti gli attributi invariati.

#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

Nell'esempio viene usato il file, , test1.xmlcome 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 in qualsiasi altro tipo di nodo questo metodo genera un XmlExceptionoggetto .

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

Per la versione asincrona di questo metodo, vedere WriteAttributesAsync.

Si applica a