XmlWriter.WriteAttributes(XmlReader, Boolean) Metode

Definisi

Ketika ditimpa di kelas turunan, tulis semua atribut yang ditemukan pada posisi saat ini di 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)

Parameter

reader
XmlReader

dari XmlReader mana untuk menyalin atribut.

defattr
Boolean

true untuk menyalin atribut default dari XmlReader; jika tidak, false.

Pengecualian

reader adalah null.

Pembaca tidak diposisikan pada elementsimpul , attribute atau XmlDeclaration .

Metode XmlWriter dipanggil sebelum operasi asinkron sebelumnya selesai. Dalam hal ini, InvalidOperationException dilemparkan dengan pesan "Operasi asinkron sudah berlangsung."

Contoh

Contoh berikut menyalin semua elemen ke output, mengubah nama tag menjadi huruf besar, dan menyalin semua atribut yang tidak berubah.

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

Contohnya menggunakan file, test1.xml, sebagai input.

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

Keterangan

Jika pembaca diposisikan pada node elementWriteAttributes , salin semua atribut yang terkandung. Jika pembaca diposisikan pada simpul attribute , metode ini menulis atribut saat ini, maka atribut lainnya sampai tag penutup elemen. Jika pembaca diposisikan pada node XmlDeclaration , metode ini menulis semua atribut dalam deklarasi. Jika pembaca diposisikan pada jenis node lain, metode ini akan melempar XmlException.

Jika metode ini dipanggil menggunakan XmlValidatingReader, untuk memastikan XML yang terbentuk dengan baik konten apa pun (yang telah diperluas dari entitas) yang dapat mengakibatkan dokumen yang tidak valid diganti ketika ditulis. Misalnya, jika atribut menyertakan &gt; entitas yang telah diperluas, untuk memastikan dokumen yang terbentuk dengan baik, yang diperluas > diganti saat ditulis dengan &gt;.

Untuk versi asinkron dari metode ini, lihat WriteAttributesAsync.

Berlaku untuk