System.Xml.XmlTextWriter sınıfı
Bu makale, bu API'nin başvuru belgelerine ek açıklamalar sağlar.
XmlTextWriter sınıfı sınıfını XmlWriter uygular.
Not
Yeni işlevlerden yararlanmak için yöntemini ve sınıfını XmlWriter.CreateXmlWriterSettings kullanarak örnekler oluşturmanızı XmlWriter öneririz.
XmlTextWriter
geçerli öğe yığınında tanımlanan tüm ad alanlarına karşılık gelen bir ad alanı yığını tutar. kullanarak XmlTextWriter
ad alanlarını el ile bildirebilirsiniz.
w.WriteStartElement("root");
w.WriteAttributeString("xmlns", "x", null, "urn:1");
w.WriteStartElement("item","urn:1");
w.WriteEndElement();
w.WriteStartElement("item","urn:1");
w.WriteEndElement();
w.WriteEndElement();
Yukarıdaki C# kodu aşağıdaki çıkışı oluşturur. XmlTextWriter
iki alt öğede çoğaltılmasını önlemek için ad alanı bildirimini kök öğeye yükselter. Alt öğeler, ad alanı bildiriminden ön eki alır.
<root xmlns:x="urn:1">
<x:item/>
<x:item/>
</x:root>
XmlTextWriter
ayrıca geçerli ad alanı bildirimini geçersiz kılmanızı sağlar. Aşağıdaki örnekte, "123" ad alanı URI'sinin "abc" tarafından geçersiz kılınarak XML öğesini <x:node xmlns:x="abc"/>
üretmesi sağlanır.
w.WriteStartElement("x","node","123");
w.WriteAttributeString("xmlns","x",null,"abc");
Bir öneki bağımsız değişken olarak alan yazma yöntemlerini kullanarak hangi ön ekin kullanılacağını da belirtebilirsiniz. Aşağıdaki örnekte, XML metnini <x:root xmlns:x="urn:1"><y:item xmlns:y="urn:1"/></x:root>
oluşturmak için aynı ad alanı URI'sine iki farklı ön ek eşlenir.
XmlTextWriter w = new XmlTextWriter(Console.Out);
w.WriteStartElement("x","root","urn:1");
w.WriteStartElement("y","item","urn:1");
w.WriteEndElement();
w.WriteEndElement();
w.Close();
Farklı ön ekleri aynı ad alanı URI'sine eşleten birden çok ad alanı bildirimi varsa, XmlTextWriter
ad alanı bildirimleri yığınını geriye doğru gösterir ve en yakın olanı seçer.
XmlTextWriter w = new XmlTextWriter(Console.Out);
w.Formatting = Formatting.Indented;
w.WriteStartElement("x","root","urn:1");
w.WriteStartElement("y","item","urn:1");
w.WriteAttributeString("attr","urn:1","123");
w.WriteEndElement();
w.WriteEndElement();
w.Close();
Yukarıdaki C# örneğinde, WriteAttributeString
çağrı bir ön ek belirtmediğinden, yazıcı ad alanı yığınına gönderilen son ön eki kullanır ve aşağıdaki XML'yi üretir:
<x:root xmlns:x="urn:1">
<y:item y:attr="123" xmlns:y="urn:1" />
</x:root>
Ad alanı çakışmaları oluşursa, XmlTextWriter
alternatif ön ekler oluşturarak bunları çözümler. Örneğin, bir öznitelik ve öğe aynı ön eke ancak farklı ad alanlarına sahipse, XmlWriter
öznitelik için alternatif bir ön ek oluşturur. Oluşturulan ön eklerin adı n{i}
i
, 1'den başlayan bir sayıdır. Sayı her öğe için 1 olarak sıfırlanır.
Ad alanı URI'siyle ilişkili özniteliklerin bir ön eki olmalıdır (varsayılan ad alanları özniteliklere uygulanmaz). Bu, XML'de W3C Ad Alanları önerisinin 5.2. bölümüne uygundur. Bir öznitelik bir ad alanı URI'sine başvuruyor ancak bir ön ek belirtmiyorsa, yazıcı öznitelik için bir ön ek oluşturur.
Boş bir öğe yazarken, etiket adı ile kapanış etiketi arasına ek bir alan eklenir, örneğin <item />
. Bu, eski tarayıcılarla uyumluluk sağlar.
yöntemi String
parametresi null
olarak kullanıldığında ve String.Empty
eşdeğer olduğunda. String.Empty
W3C kurallarını izler.
Kesin olarak yazılan veriler yazmak için, veri türlerini dizeye dönüştürmek için sınıfını XmlConvert kullanın. Örneğin, aşağıdaki C# kodu verileri öğesine Double
String
dönüştürür ve öğesini <price>19.95</price>
yazar.
Double price = 19.95;
writer.WriteElementString("price", XmlConvert.ToString(price));
XmlTextWriter
aşağıdakileri denetlemez:
- Öznitelik ve öğe adlarında geçersiz karakterler.
- Belirtilen kodlamaya uymayan Unicode karakterler. Unicode karakterleri belirtilen kodlamaya uymuyorsa,
XmlTextWriter
unicode karakterlerden karakter varlıklarına kaçmaz. - Yinelenen öznitelikler.
- DOCTYPE ortak tanımlayıcısında veya sistem tanımlayıcısında bulunan karakterler.
Güvenlik konuları
Aşağıdaki öğeler, sınıfıyla çalışırken dikkate alınması gereken öğelerdir XmlTextWriter .
tarafından XmlTextWriter oluşan özel durumlar, uygulamaya kabarmasını istemediğiniz yol bilgilerini açıklayabilir. Uygulamalarınız özel durumları yakalamalı ve uygun şekilde işlemelidir.
'yi XmlTextWriter başka bir uygulamaya geçirdiğinizde, temel alınan akış bu uygulamaya sunulur. öğesini yarı güvenilir bir uygulamaya geçirmeniz XmlTextWriter gerekiyorsa, bunun yerine yöntemi tarafından Create oluşturulan bir XmlWriter nesne kullanmanız gerekir.
, XmlTextWriter veya WriteRaw yöntemlerine WriteDocType geçirilen verileri doğrulamaz. Bu yöntemlere rastgele veriler geçirmemelisiniz.
Varsayılan ayarlar değiştirilirse, oluşturulan çıkışın iyi biçimlendirilmiş XML verileri olması garanti değildir.
Güvenilmeyen bir Encoding kaynaktan nesne gibi destekleyici bileşenleri kabul etmeyin.
Geri Bildirim
https://aka.ms/ContentUserFeedback.
Çok yakında: 2024 boyunca, içerik için geri bildirim mekanizması olarak GitHub Sorunları’nı kullanımdan kaldıracak ve yeni bir geri bildirim sistemiyle değiştireceğiz. Daha fazla bilgi için bkz.Gönderin ve geri bildirimi görüntüleyin