XmlWriter.WriteAttributes(XmlReader, Boolean) Yöntem

Tanım

Türetilmiş bir sınıfta geçersiz kılındığında, içindeki geçerli konumda XmlReaderbulunan tüm öznitelikleri yazar.

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)

Parametreler

reader
XmlReader

XmlReader Özniteliklerin kopyalandığı yer.

defattr
Boolean

trueöğesinin varsayılan özniteliklerini XmlReaderkopyalamak için ; değilse. false

Özel durumlar

reader, null'e eşittir.

Okuyucu, bir elementveya attributeXmlDeclaration düğümde konumlandırılmaz.

Önceki XmlWriter bir zaman uyumsuz işlem tamamlanmadan önce bir yöntem çağrıldı. Bu durumda, InvalidOperationException "Zaman uyumsuz bir işlem zaten devam ediyor" iletisiyle oluşturulur.

Örnekler

Aşağıdaki örnek tüm öğeleri çıkışa kopyalar, etiket adlarını büyük harfe değiştirir ve tüm öznitelikleri değişmeden kopyalar.

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

Örnekte giriş test1.xmlolarak dosyası kullanılır.

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

Açıklamalar

Okuyucu bir element düğüme WriteAttributes konumlandırıldıysa, tüm kapsanan öznitelikleri kopyalar. Okuyucu bir attribute düğüme konumlandırıldıysa, bu yöntem geçerli özniteliği yazar ve öğe kapanış etiketine kadar özniteliklerin geri kalanını yazar. Okuyucu bir XmlDeclaration düğümde konumlandırıldıysa, bu yöntem bildirimdeki tüm öznitelikleri yazar. Okuyucu başka bir düğüm türüne konumlandırıldıysa, bu yöntem bir XmlExceptionoluşturur.

Bu yöntem kullanılarak XmlValidatingReaderçağrılırsa, iyi biçimlendirilmiş XML'nin yazıldığında geçersiz bir belgeyle sonuçlanabilecek herhangi bir içeriğin (varlıklardan genişletilmiştir) değiştirilmesini sağlamak için kullanılır. Örneğin, bir öznitelik genişletilmiş bir &gt; varlık içeriyorsa, iyi biçimlendirilmiş bir belgenin ile >yazıldığında genişletilmiş &gt; olanın değiştirildiğinden emin olmak için.

Bu yöntemin zaman uyumsuz sürümü için bkz WriteAttributesAsync. .

Şunlara uygulanır