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 ; aksi takdirde . false

Özel durumlar

reader, null değeridir.

Okuyucu bir elementveya attribute XmlDeclaration düğümünde 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 örnekte tüm öğeler çıkışa kopyalanır, etiket adları büyük harfe değiştirilir ve tüm öznitelikler değiştirilmeden kopyalanır.

#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

Örnekte giriş olarak dosyası test1.xmlkullanı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üğüme 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 içeriği (varlıklardan genişletilmiştir) geçersiz bir belgeye neden olabilecek içeriğin yazıldığında 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 belgeyi sağlamak için genişletilmiş > ile &gt;yazıldığında değiştirilir.

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

Şunlara uygulanır