9 Eylül 2013 Pazartesi

C# ile Xml Read & Write İşlemleri

Xml (Extensible Markup Language) W3C tarafından tanımlanmış bir standattır. Xml veri depolamaya yarar ve  birçok dil tarafından kullanılmaktadır.  Günümüzde yazılımlar arasındaki iletişim çoğunlukla Xml yapısı ile yapılmaktadır.
Bu makalemizde C# dili ile xml dosya işlemlerinin nasıl yapıldığını inceleyeceğiz.

Xml Writing

System.Xml namespace'in altında yer alan XmlTextWriter sınıfını xml yazmak için kullanabiliriz.
Bu sınıfın metodlarını ve özelliklerini inceleyelim :

Formatting : yazıların hizalanıp hizalanmayacağı,
WriteStartDocument() : xml dosyasını yazmaya başlar,
WriteEndDocument() : xml dosyasının yazımını bitirir,
WriteStartElement() : yeni bir element(katman) oluşturur,  <Element>
WriteAttributeString() : elemente yeni bir attribute ekler
WriteString() : elementler arasına string ifade yazar,
WriteEndElement() : oluşturulan katmanı sonlandırır,   </Element>





Aşağıdaki kod parçasının oluşturacağı xml dosyası şu şekildedir :
     <?xml version="1.0"?>
            <Layer1 id="1">inside layer1</Layer1>

            string fileName = "xmldemo";
            XmlTextWriter writer = new XmlTextWriter(Application.StartupPath + @"\" + fileName + ".xml", null);
            writer.Formatting = Formatting.Indented;

            writer.WriteStartDocument();
            writer.WriteStartElement("Layer1");
            writer.WriteAttributeString("id", "1");
            writer.WriteString("inside layer1");

            writer.WriteEndElement();
            writer.WriteEndDocument();

            writer.Flush();
            writer.Close();

Aşağıdaki gibi katmanlı bir yapı oluşturmak içinde WriteStartElement() ve WriteEndElement() metodlarını içiçe kullanabiliriz.
     <?xml version="1.0"?>
           <Layer1 id="1">
                   <Layer2>inside layer2</Layer2>
           </Layer1>

            string fileName = "xmldemo";
            XmlTextWriter writer = new XmlTextWriter(Application.StartupPath + @"\" + fileName + ".xml", null);
            writer.Formatting = Formatting.Indented;

            writer.WriteStartDocument();
            writer.WriteStartElement("Layer1");
            writer.WriteAttributeString("id", "1");

            writer.WriteStartElement("Layer2");
            writer.WriteString("inside layer2");
            writer.WriteEndElement();

            writer.WriteEndElement();
            writer.WriteEndDocument();

            writer.Flush();
            writer.Close();

Xml Reading

Oluşturduğumuz xmldemo.xml dosyasını aşağıdaki gibi okuyabiliriz.
           
 string fileName = "xmldemo";
 XmlTextReader reader = new XmlTextReader(Application.StartupPath + @"\" +        fileName + ".xml");
 while (reader.Read())
 {
     if (reader.Name == "Layer1" && reader.NodeType == XmlNodeType.Element)
     {
         string id = reader.GetAttribute("id");
     }
     else if (reader.Name == "Layer2" && reader.NodeType == XmlNodeType.Element)
     {
         reader.Read();
         string text = reader.Value;
     }
  }


Hiç yorum yok:

Yorum Gönder