7. XML – C# bağlantısı: xmltextwriter sınıfı

İlk yapacağımız işlem XML kütüphanesini solution’a tanıtmaktır.

    using System.Xml;

 Daha sonra XmlTextWriter sınıfına ait nesne oluşturmalıyız.

    XmlTextWriter yaz = new XmlTextWriter("URL/PATH XmlDosyasının Nerede Oluscağı ","Kodlama tipi(Encoding)");

Boşluk yapısını oluşturmak için ise aşağıdaki kodları eklemeliyiz.

    yaz.Formatting = Formatting.Intented;
    yaz.Identation = 5;

Daha sonra ise xml dosyalarının ilk tagi olan utf etiketini yazdırarak döküman açılır.

    yaz.WriteStartDocument();

Daha sonra tüm elementler hiyerarşik şekilde aşağıdaki gib oluşturulur.

  •  Nesne.WriteStartDocument();    —>   xml dökümanının başlangıç satırını yazdırır.
  •  Nesne.WriteStartEndDocument();    —>   xml yazma işlemini bitirir.
  •  Nesne.WriteStartElement(“mail_kutusu”);   —>   xml elementi yazar.
  •  Nesne.WriteFullEndElement();     —>  elementi kapar.
  •  Nesne.WriteAttributeString(“attributeName”,”AttributeValue”);   —>    Elemente attribute verir. Verilmek istenen elementin hemen altına yazılır.
  •  Nesne.WriteComment(“Yorum içeriği”);   —>   Yorum satırı yazar.
using System.Xml;
using System.IO;
using CicekSepeti.Malzemeler;
using System.Xml;


namespace CicekSepeti
{
 class Program
 {
   static void Main(string[] args)
   {

     XmlTextWriter yaz = new XmlTextWriter("c:/users/lenovo/yeni.xml",Encoding.UTF8);

     yaz.Formatting = Formatting.Indented;
     yaz.Indentation= 5;

     yaz.WriteStartDocument(); //xml dökümanının başlangıç satırını yazdırır.
     yaz.WriteStartElement("mail_kutusu"); // <mail_kutusu>

         yaz.WriteStartElement("mail");  // <mail>
         WriteAttributeString("id","1"); // <mail id="1">

                 yaz.WriteStartElement("kimden");  // <kimden>
                 yaz.WriteFullEndElement();        // </kimden>
                 yaz.WriteStartElement("kime");    // <kime>
                 yaz.WriteFullEndElement();        // </kime>
                 yaz.WriteStartElement("konu");     // <konu>
                 yaz.WriteFullEndElement();        // </konu>
                 yaz.WriteStartElement("mesaj");    // <mesaj>
                 yaz.WriteFullEndElement();        // </mesaj>
 
        yaz.FullEndElement(); // </mail>

     yaz.WriteFullEndElement(); // </mail_kutusu>
     yaz.WriteEndDocument(); //dokümanı sonlandırır.
     yaz.close(); //dokümanı kapatır.

    Console.ReadKey();
    }
  }

}

Yukarıdaki kalıpları genellikle parent tag yeni içerisinde text yerine başka tagleri barındıran tag tanımlarken kullanırız.Bu kalıp ile xml taglerini oluşturduk ve taglere attribute verdik. Peki ya tagin içerisine text girmek istersek nasıl bir yapı kullanıcaz. Bunun için şöyle bir yapı kullanabiliriz. 

 Nesne.WriteString("elementAdı","ElementDegeri"); 
using System.Xml;
using System.IO;
using CicekSepeti.Malzemeler;
using System.Xml;

namespace CicekSepeti
{
 class Program
 {
    static void Main(string[] args)
    {

       XmlTextWriter yaz = new XmlTextWriter("c:/users/leono/yeni.xml",Encoding.UTF8);

       yaz.Formatting = Formatting.Indented;
       yaz.Indentation= 5;

       yaz.WriteStartDocument(); //xml dökümanının başlangıç satırını yazdırır.
       yaz.WriteStartElement("mail_kutusu");  //<mail_kutusu>

          yaz.WriteStartElement("mail");  //<mail>
          WriteAttributeString("id","1"); //<mail id=1>

              yaz.WriteElementString("kimden","cagatay"); //<kimden> cagatay </kimden>
              yaz.WriteElementString("kime","mustafa");   //<kime> mustafa</kime>
              yaz.WriteElementString("konu","önemli");    //<konu> önemli</konu>
              yaz.WriteElementString("mesaj","ORNEK İCERIK");  //<mesaj> ORNEK İCERIK</mesaj>

          yaz.FullEndElement();  //</mail>

      yaz.WriteFullEndElement(); //</mail_kutusu>
      yaz.WriteEndDocument(); //dokümanı sonlandırır.
      yaz.close(); //dokümanı kapatır.

     Console.ReadKey();
     }

   }

}