Makale Özeti

.NET ile birlikte gittikçe daha yoğun kullanmaya başladığımız XML ve C# hakkında bir yazı.

Makale

       C# ve XML

       Bildiğiniz gibi xml çeşitli sistemler arasında ver alış verişi yapmamızda bize ciddi
kolaylıklar sağlamakta. Hangi teknolojilerle çalıştığımızın çok önemi yok. Her dilin kendine
göre bu XML Filelarını parse etme yöntemi var. Bu makalemde sizlere C# ve XML ilişkisini
aktarmaya çalışacağım.
       XML Dosyaları üzerinde işlem yapmamızı sağlıyan methodlar System.Xml namespacei
içinde yer alır.


using System;
using System.Xml;
namespace XMLProject
{
  public class XMLClass
  {
  
  public static void Main()
  {
    XMLClass baglan = new XMLClass();
    baglan.createXMLFile("C:\\AspNedir.xml");
  }
  
  public void createXMLFile(string fileName)
  {
    XmlTextWriter myWriter=new XmlTextWriter(fileName, null);
    // Döküman olusturuluyor.
    myWriter.WriteStartDocument();
    // Döküman içerisine bir açiklama alani ekleniyor.
    myWriter.WriteComment("AspNedir.xml Yaratıldı");
    // Personel adli etiketi olusturuluyor.
    myWriter.WriteStartElement("Personel");
    myWriter.WriteStartElement("SicilNo");
    // Sicil Alanının Attributeü
    myWriter.WriteAttributeString("id","1");
    // Ad alani olusturuluyor ve degeri içine yaziliyor.
    myWriter.WriteStartElement("Ad");
    myWriter.WriteString("Oğuz");
    myWriter.WriteEndElement();
    myWriter.WriteStartElement("Soyad");
    myWriter.WriteString("Çalışkan");
    myWriter.WriteEndElement();
    myWriter.WriteStartElement("Telefon");
    myWriter.WriteString("02165213624");
    myWriter.WriteEndElement();
    myWriter.WriteStartElement("Bolum");
    myWriter.WriteString("Muhasebe");
    myWriter.WriteEndElement();
    // SicilNo elementi kapatiliyor.
    myWriter.WriteEndElement();
    //Personel elementi kapatiliyor.
    myWriter.WriteEndDocument();
    // Döküman kapatılıyor.
    myWriter.Close();
  }
 }
 }

       Örnektede görüldüğü gibi XmlTextWriter sınıfı aracılığı ile dosyamı yaratıyorum.
Bu classın constructorı dışarıdan iki parametre alıyor. Bunlarda ilki yaratılacak olan
dosyanın sistem üzerindeki yeri ve dosyanın adı. İkincisi ise System.Text.Encoding
değerinin boş olduğunu gösterir. Örnekte Main methodu üzerinden createXMLFile isimli
methodu çağırırken dosya bilgisinide parametre olarak gönderiyorum.
       Belirttiğimiz dosya üzerinde herhangi bir element açmak için kullandığımız komut ise
WriteStartElement. Yaratacağımız elementin adının ise bu komuta parametre olarak
gönderiyoruz. Bu elementin alacağı normal bir değer ise WriteString, Attribute ise
WriteAttributeString komutunu kullanıyoruz. WriteAttributeString komutu çağırıldığında
dışarıdan iki parametre alır. Bunlardan ilki Attribute adı, diğeri ise değeridir. Dosya ile
işimiz bittikten sonra ise tek yapmamız gereken .Close ile kapatmaktır.


public void readXMLFile(string fileName)
{
  XmlTextReader xmlreader = new XmlTextReader(fileName);
  while(xmlreader.Read())
  {
    Console.WriteLine(xmlreader.Value);
  }
  Console.Read();
}

       Yarattığımız XML Fileını okumak içinde yukarıdaki kodu kullanmamız yeterli. DataBaseden
veri okuma işlemlerinde sıkça karşılaştığımız DataReader nesnesinin bir benzerini burada dosya
okumak için kullanıyoruz. Son olarakta, şayet dökümana yeni data girmek isterseniz aşağıdaki
adımları takip etmeniz yeterli.


public void addXMLFile(string fileName)
{
  XmlDocument doc = new XmlDocument();
  doc.Load(fileName);
  // Eklenecek Element
  XmlElement addSicil = doc.CreateElement("SicilNo");
  // Elemente Ait Attribute
  addSicil.SetAttribute("id","2");

  XmlElement addAd = doc.CreateElement("Ad");
  // Ad Elementine Ait Değer
  addAd.InnerText = "Ali";
  // Elementin Parentı Belirtiliyor. Yani SicilNo
  addSicil.AppendChild(addAd);

  XmlElement addSoyad = doc.CreateElement("Soyad");
  addSoyad.InnerText = "Demirci";
  addSicil.AppendChild(addSoyad);

  XmlElement addTel = doc.CreateElement("Telefon");
  addTel.InnerText = "05323254659";
  addSicil.AppendChild(addTel);

  XmlElement addBolum = doc.CreateElement("Bolum");
  addBolum.InnerText = "Bilgi Islem";
  addSicil.AppendChild(addBolum);

  doc.DocumentElement.AppendChild(addSicil);

  XmlTextWriter tw = new XmlTextWriter(fileName,null);
  tw.Formatting = Formatting.Indented;
  doc.WriteContentTo(tw);
  tw.Close();
}

       Şimdilik bu kadar. Bundan önceki C# ta Dosya işlemleri isimli iki yazım ile beraber
üç makalelik bir diziyi geride bıraktık. Sanırım bu üç makale Text Dosyaları üzerinde
yapabileceğimiz işlemler konusunda sizlere bir fikir vermiştir. İlerliyen günlerde farklı
konular ile tekrar birlikte olucaz. Makale Önerileriniz, soru ve elştirileriniz için mail adreslerim;

guven.kebeci@nedir.org
gkebeci@yahoo.com