C# Xml İşlemleri
Merhabalar,
Bu yazımda C# ta xml oluşturma , okuma v.s. işlemlemleri nasıl yapıldığı hakkında örnek kodlarla açıklamaya çalışacağım .
Öncelik olarak bu işlemler için System.Xml.Linq sınıfını kullanacağız , bu nedenle projemizin using kısmına System.Xml.Linq kütüphanesini eklememiz gerekecek.
Örnek proje github linki : https://github.com/salihseker/C-Xml_Islemleri
// using System.Xml.Linq; //
XML Oluşturma:
Oluşturacağımız xml örneği şu şekildedir :
// <?xml version="1.0" encoding="utf-8" standalone="yes"?> <Kullanicilar> <!--Yorum ekleme v.s.--> <Kullanici ID="1"> <Isim>Salih</Isim> <Soyisim>ŞEKER</Soyisim> <WebSite>www.salihseker.com</WebSite> </Kullanici> </Kullanicilar> //
// private static void xmlOlusturma() { /* <?xml version="1.0" encoding="utf-8" standalone="yes"?> <Kullanicilar> <!--Yorum ekleme v.s.--> <Kullanici ID="1"> <Isim>Salih</Isim> <Soyisim>ŞEKER</Soyisim> <WebSite>www.salihseker.com</WebSite> </Kullanici> </Kullanicilar> */ XDocument XDoc = new XDocument( new XDeclaration("1.0", "UTF-8", "yes"), new XElement("Kullanicilar", new XComment("Yorum ekleme v.s."), new XElement("Kullanici", new XAttribute("ID", "1"), new XElement("Isim", "Salih"), new XElement("Soyisim", "ŞEKER"), new XElement("WebSite", "www.salihseker.com") ) ) ); XDoc.Save(@"D:\xmlOlusturmaOrnek.xml"); } //
List<T> Koleksiyonundaki dataları XML Kaydetmek:
Kullanıcı Sınıfı :
// class Kullanici { public Guid ID { get; set; } public string Isim { get; set; } public string Soyisim { get; set; } public int Numara { get; set; } public string Github { get; set; } } //
// private static void listeXmlOlusturma() { List<Kullanici> Kullaniciler = new List<Kullanici>(); Kullanici k1 = new Kullanici(); k1.ID = Guid.NewGuid(); k1.Isim = "Salih"; k1.Soyisim = "SEKER"; k1.Numara = 1; k1.Github = "github.com/salihseker"; Kullaniciler.Add(k1); Kullanici k2 = new Kullanici(); k2.ID = Guid.NewGuid(); k2.Isim = "Kerami"; k2.Soyisim = "Ozsoy"; k2.Numara = 2; k2.Github = "github.com/keramiozsoy"; Kullaniciler.Add(k2); XDocument Doc = new XDocument( new XDeclaration("1.1", "UTF-8", "yes"), new XElement("Kullanciciler", Kullaniciler.Select(I => new XElement ("Kullanici", new XElement("ID", I.ID), new XElement("Isim", I.Isim), new XElement("Soyisim", I.Soyisim), new XElement("Numara", I.Numara), new XElement("Github", I.Github) ) ) ) ); Doc.Save(@"D:\Kullanicilar.xml"); } //
İşlemimizde Kullanicilar listesini linq Select işlemi ile içeriğini döndük, bu işlem for veya foreach gibi döngülerle de yapılabilir.
Sonuc :
Kullanicilar.xml
<?xml version="1.0" encoding="utf-8" standalone="yes"?> <Kullanciciler> <Kullanici> <ID>56b1004e-0922-4866-8aa9-68eb7790cd36</ID> <Isim>Salih</Isim> <Soyisim>SEKER</Soyisim> <Numara>1</Numara> <Github>github.com/salihseker</Github> </Kullanici> <Kullanici> <ID>d4c8ad8e-8028-4650-86a7-14fa2eb4909d</ID> <Isim>Kerami</Isim> <Soyisim>Ozsoy</Soyisim> <Numara>2</Numara> <Github>github.com/keramiozsoy</Github> </Kullanici> </Kullanciciler>
Xml Okuma:
docOku.Descendants ile node ların adının Kullanici olduğu belirtiliyor.
//www.salihseker.com - Salih ŞEKER private static void xmlOkuma() { XDocument docOku = XDocument.Load(@"D:\Kullanicilar.xml");//xml XDocument nesnesine yükleniyor List<XElement> okunanXElement = docOku.Descendants("Kullanici").ToList();//Node ların adının Kullanici olduğu belirtiliyor. foreach (var item in okunanXElement)//Okunan Nodların içerikleri ekrana yazdırılıyor { Console.WriteLine("ID : " + item.Element("ID").Value); Console.WriteLine("Isim : " + item.Element("Isim").Value); Console.WriteLine("Soyisim : " + item.Element("Soyisim").Value); Console.WriteLine("Numara : " + item.Element("Numara").Value); Console.WriteLine("Github : " + item.Element("Github").Value); Console.WriteLine(); } Console.ReadLine(); } //
yardımcı olması dileğiyle , iyi çalışmalar 🙂 Salih ŞEKER.