XmlWriter.WriteAttributes(XmlReader, Boolean) Metoda

Definice

Při přepsání v odvozené třídě zapíše všechny atributy nalezené na aktuální pozici v objektu 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)

Parametry

reader
XmlReader

Ze XmlReader kterého chcete zkopírovat atributy.

defattr
Boolean

true chcete-li zkopírovat výchozí atributy z objektu XmlReader; v opačném případě false.

Výjimky

reader je null.

Čtečka není umístěna na elementattribute uzlu nebo XmlDeclaration na uzlu.

Před XmlWriter dokončením předchozí asynchronní operace byla volána metoda. V tomto případě InvalidOperationException je vyvolán zpráva "Asynchronní operace už probíhá".

Příklady

Následující příklad zkopíruje všechny prvky do výstupu, změní názvy značek na velká písmena a zkopíruje všechny atributy beze změny.

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

Příklad používá soubor , test1.xmljako vstup.

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

Poznámky

Pokud je čtenář umístěn na element uzlu WriteAttributes zkopíruje všechny obsažené atributy. Pokud je čtečka umístěna na attribute uzlu, tato metoda zapíše aktuální atribut, zbytek atributů, dokud prvek uzavírá značku. Pokud je čtenář umístěn na XmlDeclaration uzlu, tato metoda zapíše všechny atributy v deklaraci. Pokud je čtečka umístěna na jakýkoli jiný typ uzlu tato metoda vyvolá XmlException.

Pokud je tato metoda volána pomocí XmlValidatingReader, k zajištění dobře formátovaného XML libovolného obsahu (který byl rozšířen z entit), které by mohly vést k neplatnému dokumentu je nahrazen při zápisu. Pokud například atribut obsahuje entitu &gt; , která byla rozšířena, aby se zajistilo, že se rozbalený > dokument nahradí při zápisu s &gt;.

Asynchronní verzi této metody naleznete v tématu WriteAttributesAsync.

Platí pro