XmlWriter.WriteAttributes(XmlReader, Boolean) Yöntem
Tanım
Önemli
Bazı bilgiler ürünün ön sürümüyle ilgilidir ve sürüm öncesinde önemli değişiklikler yapılmış olabilir. Burada verilen bilgilerle ilgili olarak Microsoft açık veya zımni hiçbir garanti vermez.
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 > varlık içeriyorsa, iyi biçimlendirilmiş bir belgenin ile >yazıldığında genişletilmiş > olanın değiştirildiğinden emin olmak için.
Bu yöntemin zaman uyumsuz sürümü için bkz WriteAttributesAsync. .