Aracılığıyla paylaş


System.Xml.XmlTextWriter sınıfı

Bu makale, bu API'nin başvuru belgelerine ek açıklamalar sağlar.

XmlTextWriter sınıfı, XmlWriter sınıfını uygular.

Uyarı

XmlWriter öneririz ki, yeni işlevlerden yararlanmak için XmlWriter.Create yöntemi ve XmlWriterSettings sınıfını kullanarak örnekler oluşturun.

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");

Ön eki bir argüman olarak alan yazma metodlarını kullanarak hangi ön eki kullanacağınızı 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.

Bir String yöntem parametresi olarak kullanıldığında, null ve String.Empty eşdeğerdir. String.Empty W3C kurallarını izler.

Güçlü tipli veriler yazmak için, veri türlerini dizeye dönüştürmek amacıyla XmlConvert sınıfını kullanın. Örneğin, aşağıdaki C# kodu, verileri Double öğesinden String öğesine dönüştürür ve <price>19.95</price> öğesini 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 karakterleri karakter varlıklarına dönüştürmez.
  • Yinelenen öznitelikler.
  • DOCTYPE ortak tanımlayıcısında veya sistem tanımlayıcısında bulunan karakterler.

Güvenlikle ilgili dikkat edilmesi gerekenler

Aşağıdaki öğeler, XmlTextWriter sınıfıyla çalışırken dikkate alınması gereken şeylerdir.

  • XmlTextWriter tarafından atılan özel durumlar, uygulamaya kabarmasını istemediğiniz yol bilgisini ifşa edebilir. Uygulamalarınız özel durumları yakalamalı ve uygun şekilde işlemelidir.

  • XmlTextWriter'ü başka bir uygulamaya aktardığınızda, altta yatan akış bu uygulamaya açığa çıkar. Eğer XmlTextWriter öğesini yarı güvenilir bir uygulamaya geçirmeniz gerekiyorsa, bunun yerine XmlWriter yöntemi tarafından oluşturulan bir Create nesnesi kullanmanız gerekir.

  • XmlTextWriter, WriteDocType veya WriteRaw yöntemlerine 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.