C# ile Xml Oluşturma ve Veri Ekleme

Merhaba arkadaşlar, Bugün C# ile Xml belgesinden veri çekme, silme, üstüne yazma ve xml oluşturmayı öğreneceğiz. Bildiğiniz gibi artık programlarda olsun web sitelerinde olsun rss kullanılıyor. Rss’de xml kullanılıyor. Yani biz xml oluşturmayı ve veri çekmeyi bilirsek c# formumuzdaki sayfamıza başka bir siteden xml ile veri çekebiliriz. Her programcının ve programlamayı öğrenmek isteyenlerin xml işlemlerini bilmesi gerekir. Xml ile C# Program güncellemesi (önceki konularımda vardı), veri saklama, siteden veri çekme vb. birçok işlemi yapabiliriz.

İlk önce Kütüphanemizden Aşağıdaki iki veriyi çağırıyoruz.

using System.Xml;
using System.Xml.Linq;

Project > Add New İtem > XML File ‘i Seçip “Add” Tuşuna basıyoruz. Örnek Olarak ben aşağıdaki verileri yazdım. Siz kafanıza göre değiştirebilirsiniz. Burda arası her bir veriyi temsil ediyor.. C# Kodlarını yazmaya başlayınca daha iyi anlayacaksınız. Öbür taraflarda ise kısımlar ve soyad kısımların içinde verileri var.

<?xml version="1.0" encoding="utf-8" ?>

<veri>
<item>
  <Ad>Atakan Yasin</Ad>
  <Soyad>Uludağ</Soyad>
  <WebSitesi>http://atknuludag.com</WebSitesi>
</item>

<item>
  <Ad>Yasin</Ad>
  <Soyad>Uludağ</Soyad>
  <WebSitesi>AtknUludag.Com</WebSitesi>
</item>
</veri>

Şimdi Yukarıda yazılan verileri C# Kodları ile label’lere çekelim. Formunuza 2 Adet Label ekleyiniz.

int say = 1;
XmlDocument xmlVerisi = new XmlDocument();
xmlVerisi.Load(@"XMLFile1.xml");
XmlNodeList xmlNodeList = xmlVerisi.GetElementsByTagName("item"); //Tek tek her item'deki verileri çekiyoruz.
foreach (XmlNode node in xmlNodeList)
{
 if (say == 1)
 {
   string ad = node["Ad"].InnerText; //item Kısmındaki Ad verisini çekiyoruz
   string soyad = node["Soyad"].InnerText; //item Kısmındaki Soyad verisini çekiyoruz
   string WebSitesi = node["WebSitesi"].InnerText; //item Kısmındaki WebSitesi verisini çekiyoruz
   label1.Text = ad + "-" + soyad + "-" + WebSitesi; //Hepsini label'e aralarında çizgi olacak şekilde yazdırıyoruz.
   say++; //Öbür item kısmını okusun diye sayacı arttırıyoruz.
 }
 else if(say == 2)
 {
   string ad = node["Ad"].InnerText; //item Kısmındaki Ad verisini çekiyoruz
   string soyad = node["Soyad"].InnerText; //item Kısmındaki Soyad verisini çekiyoruz
   string WebSitesi = node["WebSitesi"].InnerText; //item Kısmındaki WebSitesi verisini çekiyoruz
   label2.Text = ad + "-" + soyad + "-" + WebSitesi; //Hepsini label'e aralarında çizgi olacak şekilde yazdırıyoruz.
   say = 1; //xml dosyasına 2 adet item kısmı eklediğimiz için say'ı 1 yapıyoruz.
 }
}

Böylece Xml dosyamızdaki verileri 2 Adet label’e çektik. Şimdi ise Xml Dosyası Oluşturup içine veri ekleyelim.

XmlTextWriter xmlolustur = new XmlTextWriter("C:\\veri.xml", UTF8Encoding.UTF8);//Dosyanın oluşturulacağı dizin,Kodlaması
            xmlolustur.WriteStartDocument();//Xml içine Element Oluşturma işlemine başlanıyor.
            xmlolustur.WriteComment("AtknUludag.Com");//Dosya içine açıklama satırı ekledik.
            xmlolustur.WriteStartElement("table");//item Etiketi ekledik.
            xmlolustur.WriteEndDocument();//Element Oluşturma işlemi bitti.
            xmlolustur.Close();//Dosya oluşturuldu ve bağlantı kapatıldı.

            XmlDocument doc = new XmlDocument();
            doc.Load("C:\\veri.xml");
            XmlElement UserElement = doc.CreateElement("Kullanicilar");//Element Ekledik.
            UserElement.SetAttribute("item", Guid.NewGuid().ToString());//elemente bir attribute atadık
            
            XmlElement kullaniciadi = doc.CreateElement("KullaniciAdi");//Kullanicilar elementi içine bir kayıt ekledik
            kullaniciadi.InnerText = "username";//kayıt için değer atadık
            UserElement.AppendChild(kullaniciadi);//kayıt için parent atadık (UserElemet parenti)

            XmlElement kullanimlimit = doc.CreateElement("Limit");//Kullanicilar elementi içine bir kayıt ekledik
            kullanimlimit.InnerText = "limit";//kayıt için değer atadık
            UserElement.AppendChild(kullanimlimit);//kayıt için parent atadık (Kullanicilar parenti)

            doc.DocumentElement.AppendChild(UserElement);//xml dosyamıza element ve kayıtları ekledik

            XmlTextWriter xmleEkle = new XmlTextWriter("C:\\veri.xml", null);//xml dosyamıza fiziksel olarak kayıtları yazıyoruz
            xmleEkle.Formatting = Formatting.Indented;
            doc.WriteContentTo(xmleEkle);//kayıtlar eklendi
            xmleEkle.Close();//dosya kapatıldı

6 yorum

  1. adem durak Yanıtla

    çok guzel anlatmısınız emegınıze saglık ama bu kod bloklarını bız nereye yazacagız hıc bırının blogu gorukmuyor soylenmemıste yanı page load’damı yazılacak yoksa ayrı bır classmı olusturulacak yordamamı yazılacak ?

    • Atakan Yasin Uludağ YazarYanıtla

      Kütüphaneye ekleyin dediğim kodları sayfanın en başına ekleyin. Diğer kodları ise veri çekme ve alma (xml kodları hariç) buton click’ine yazabilirsiniz. Tam olarak nereye basınca çalışmasını istiyorsanız o kod bloğunun içine yazmanız gerek.

  2. Erkan Yanıtla

    Atakan bey merhaba, bir xml çalışması yaptım fakat çalıştıramıyorum., bir yerde hata yapıyorum fakat çıkamadım sizin bilginize ihtiyacım var yardım ederseniz sevirim.
    elimde xml belgsi var şöyle.

    1

    KFKS

    Kafkas Üniversitesi

    26690

    27150

    decimal uskurum = Convert.ToDecimal(xmlDoc.SelectSingleNode(string.Format(“hastane_evrak_bilgileri/Resmi_Kurum_evrak/Resmi_Kurum[@Sembol='{KFKS}’]/evrakno”, “”)).InnerText.Replace(‘.’, ‘,’));

    ekrana evrak no yazdıramıyorum yardım ederseniz sevinirim tşk. şimdiden.

  3. merve Yanıtla

    İyi Günler,
    Xml den çektiğim verileri datagirdviewde görüntülüyorum ancak xml’e ilk eklenen kayıt grdiviewde en üstte son eklenen kayıt en altta gözüküyor. Ben xml e son eklenen kaydı en üstte nasıl görüntüleyebilirim.

    Diagnostics>-

    Şube A
    OFFLINE
    08:36:26
    03.05.2013

    Şube A
    OFFLINE
    08:36:31
    03.05.2013

    XML bu şekildedir.

    • Atakan Yasin Uludağ Yanıtla

      Öyle bir şeyi şöyle yapabilirsiniz. DataGrid’de sıralanmasını istediğiniz bir kısmı birkaç c# kodu ile yapabilirsiniz. İsterseniz yardımcı olurum 🙂

Bir cevap yazın

E-posta hesabınız yayımlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir

This site uses Akismet to reduce spam. Learn how your comment data is processed.