C# 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,
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.Kod:<?xml version="1.0" encoding="utf-8" ?> <muzikler> <muzik> <ad>Evet</ad> <adress>C:\Program Files\gunduz\05-Evet.mp3</adress> </muzik> <muzik> <ad>Gokhan_turkmen_don</ad> <adress>C:\Program Files\gunduz\Gokhan_turkmen_don.mp3</adress> </muzik> <muzik> <ad>serce</ad> <adress>C:\Program Files\gunduz\serce.mp3</adress> </muzik> <muzik> <ad>AKLIM SENDE KALIR</ad> <adress>C:\Program Files\gunduz\FERHAT GÖÇER-AKLIM SENDE KALIR 2008.mp3</adress> </muzik> <muzik> <ad>Seni istiyorum</ad> <adress>C:\Program Files\gunduz\Sezen Aksu - Seni istiyorum 6.wma</adress> </muzik> <muzik> <ad>sigaramýn dumaný</ad> <adress>C:\Program Files\gunduz\ezginin günlüðü - 1980 (sigaramýn dumaný)28.mp3</adress> </muzik> <muzik> <ad>Hadi Çal</ad> <adress>C:\Program Files\gunduz\Serdar Ortaç 09. Hadi Çal.mp3</adress> </muzik> <muzik> <ad>Bob Marley - Is This Love</ad> <adress>C:\Program Files\gunduz\Bob Marley - Is This Love.mp3</adress> </muzik> </muzikler>
Form1.cs imizin içeriði
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.Kod:using 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 Files\gunduz\gunduz_xml.xml"; string filetarname = @"C:\Program Files\gunduz\gunduz_tarih_xml.xml"; string tarih; public gunduz() { InitializeComponent(); readxml(filename); } public void readxml(string filename) { // þarkýlar list box XmlTextReader xmlreader = new XmlTextReader(filename); // xml reader ýmýzla dosyamýzý okuyoruz while (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ý ekledik case "adress": sarki[count] = Convert.ToString(xmlreader.ReadString()); count++; // bu kýsým yazmýþ olduðumum programa özgü siz farlý yapabilirsiniz break; } } }
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..
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.Kod:<?xml version="1.0" encoding="utf-8" ?> <tarihler> <alarm> <tarih>05.06.2010 00:00:00</tarih> <not>proje teslimm !!!!</not> </alarm> </tarihler>
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.
Bu kodlamara baðlý kalmadan okuma ve yazma ile ilgili daha farklý yöntemlerde kullanabiliriz ....Kod:public void xmlekaydet(string tarihe ,string note) { XmlDocument xdoc = new XmlDocument(); // xdoc adýnda yeni bir xml dosyasý oluþturduk xdoc.Load( "C:\\Program Files\\gunduz\\gunduz_tarih_xml.xml"); //var olan dosyamýzý xdoc un içene kopyaladýk XmlNode 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ýyoruz alarm.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 }
Umarým yardýmcý olmuþumdur .. Hepinize kolay gelsin
-ALINTI-
Þu an 1 kullanýcý var. (0 üye ve 1 konuk)