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ı 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 DoubleString 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.