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.

C#
public virtual void WriteAttributes (System.Xml.XmlReader reader, bool defattr);

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.

C#
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();
  }
}

Nell'esempio viene usato il file, , test1.xmlcome input.

XML
<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

Prodotto Versioni
.NET Core 1.0, Core 1.1, Core 2.0, Core 2.1, Core 2.2, Core 3.0, Core 3.1, 5, 6, 7
.NET Framework 1.1, 2.0, 3.0, 3.5, 4.0, 4.5, 4.5.1, 4.5.2, 4.6, 4.6.1, 4.6.2, 4.7, 4.7.1, 4.7.2, 4.8
.NET Standard 1.0, 1.1, 1.2, 1.3, 1.4, 1.6, 2.0, 2.1
UWP 10.0