C# ile XML DOSYA OKUMAK YAZMAKC# ile XML üzerinde işlem yapacağımız zaman ihtiyacımız olan gerekli bilgileri System.Xml kütüphanesini çağırarak ulaşabiliriz. XML üzerinde dosya yazmak veya okumak istediğimiz zaman katman katman bilgiye erişip nokta atışı yapmamız gerekiyor. Bu işlemlerde en önemli yardımcılarımız ise XmlTextReader ve XmlDocument namespace’leri.Örnek uygulamımıza başlayalım.Önceden elinde var olan bir xml dosya kullanacağım. Şimdi xml dosyamın içeriği,Evet
C:Program Filesgunduz5-Evet.mp3

Gokhan_turkmen_don
C:Program FilesgunduzGokhan_turkmen_don.mp3

serce
C:Program Filesgunduzserce.mp3

AKLIM SENDE KALIR
C:Program FilesgunduzFERHAT GÖÇER-AKLIM SENDE KALIR 2008.mp3

Seni istiyorum
C:Program FilesgunduzSezen Aksu – Seni istiyorum 6.wma

sigaramın dumanı
C:Program Filesgunduzezginin günlüğü – 1980 (sigaramın dumanı)28.mp3

Hadi Çal
C:Program FilesgunduzSerdar Ortaç 09. Hadi Çal.mp3

Bob Marley – Is This Love
C:Program FilesgunduzBob Marley – Is This Love.mp3



Dosyamızı açtığımız c# windows aplicationa ekleyelim ve formumuza bir tane listbox ekleyelim. Kısaca önceden hazırladığımız xml içeriğimizi okuyup listboxımıza ekleyeceğiz. Örnek uygulamamıza başlayalım.Form1.cs imizin içeriğiusing System;using System.Collections.Generic;using System.ComponentModel;using System.Data;using System.Drawing;using System.Linq;using System.Text;using System.Windows.Forms;using System.Xml;namespace gunduz{public partial class gunduz : Form{int counttar = 0;int count = 0;string[] sarki = new string[20];string filename = @”C:Program Filesgunduzgunduz_xml.xml”;string filetarname = @”C:Program Filesgunduzgunduz_tarih_xml.xml”;string tarih;public gunduz(){InitializeComponent();readxml(filename);}public void readxml(string filename){// şarkılar list boxXmlTextReader xmlreader = new XmlTextReader(filename); // xml reader ımızla dosyamızı okuyoruzwhile (xmlreader.Read()) //dosya bitenekadar döngüye alıyoruz{switch (xmlreader.Name) //.name özelliği ile içerk içerisindeki ad ve adress alanlarını kontrol edicez{case “ad”:ltb_sar_list.Items.Add(count+” – “+Convert.ToString(xmlreader.ReadString()));break; // listbox ımıza istediğimiz kısımları ekledikcase “adress”:sarki[count] = Convert.ToString(xmlreader.ReadString());count++; // bu kısım yazmış olduğumum programa özgü siz farlı yapabilirsinizbreak;}}}
Buraya kadar ki kısımda xml kaynağımızı okuduk şimdi varsayalım tarihlerle ilgili bir kayıt oluşturacaz burda dikkatli olamamız gereken şey xml kaydın şeklini bozmamak yoksa program okumaya çalışırken hata verecektir.XML kaydımızın şeklini ii ce düşündükten sonra nasıl bir kayıt papacağımızla ilgili kodlamamıza başlayabilriz..öncelikle var olan xml kaynağımı size göstereyim..05.06.2010 00:00:00
proje teslimm !!!!



Gördüğünüz gibi xml dosyamın içinde tarih diye bir node ve onun alt kümesi alarm ve alarma ait iki childnode var.Bu kısımda ben xml kaydını gerekli bilgileri başka yerden alıp fonksionuma gödererek yaptım kodda da göreceğiniz gibi tarih ve not bilgileri başka yerden geliyor.public void xmlekaydet(string tarihe ,string note){XmlDocument xdoc = new XmlDocument(); // xdoc adında yeni bir xml dosyası oluşturdukxdoc.Load( “C:\Program Files\gunduz\gunduz_tarih_xml.xml”); //var olan dosyamızı xdoc un içene kopyaladıkXmlNode parent = xdoc.ChildNodes[1];XmlNode alarm = xdoc.CreateNode(XmlNodeType.Element, “alarm”, “”);XmlNode tarih = xdoc.CreateNode(XmlNodeType.Element, “tarih”, “”);tarih.InnerText = tarihe;XmlNode not = xdoc.CreateNode(XmlNodeType.Element, “not”, “”);not.InnerText = note; // gerekli node larımızı soy ağacına göre olşturduktan sonra// bu koddla bilgileri içlerine aktarıyoruzalarm.AppendChild(tarih);alarm.AppendChild(not);parent.AppendChild(alarm);xdoc.Save(“C:\Program Files\gunduz\gunduz_tarih_xml.xml”); //ve xdoc umuzu aynı isimle tekrar kayıd ediyoruz}
Bu kodlamara bağlı kalmadan okuma ve yazma ile ilgili daha farklı yöntemlerde kullanabiliriz ….Umarım yardımcı olmuşumdur .. Hepinize kolay gelsin