29 Kasım 2008 Cumartesi

LINQ to XML(XLINQ=> XML Language Integrated Query) Bölüm 1

Bu yazımda Linq kullanarak XML dökümanı oluşturmayı inceleyeceğiz.Sorgulama konusunu ise daha sonraki makalelerde inceleyeceğiz.
XML üzerinde Linq ile işlemler yapabilmemiz için öncelikle System.Xml.Linq Dll'ini eklememiz gerekiyor.Daha sonra ise System.Xml.Linq namaspace'ini yazıyoruz.

System.Xml.Linq Namespace altında bulunan ve bizim kullanacağımız sınıflar ve açıklamaları
  • XDocument=> Bir XML Dökümanını temsil eder.
  • XElement=>Bir XML Elementini temsil eder.
  • XAttribute =>Bir XML Attribute'unu temsil eder.
  • XDeclaration=>XML başlığında yapılan tanımlamaları temsil eder.
  • XComment=>Xml Dökümanındaki yorumları temsil eder.
Öncelikle kodun içerisinde bir XML dökümanı oluşturacağız.Bu döküman içerisinde Kisiler tagı olacak.Kisiler tagının içerisinde her bir kişiyi temsil eden bir Kisi düğümü,kisi düğümü içerisinde Adi,Soyadi ve Mesleği olan düğümler ve ID Attribute'u bulunacak.Yani

XDocument doc=new XDocument(
new XDeclaration("1.0","utf-8","yes"),
new XComment("Linq icin olusturulan ornek"),
new XElement("Kisiler",
new XElement("Kisi",
new XAttribute("ID",3),
new XElement("Adi","Ilkay"),
new XElement("Soyadi","Ilknur"),
new XElement("Meslegi","Ogrenci")
)));
Console.WriteLine(doc.ToString());
Console.ReadLine();

Yaptığımız bu doc içerisinde belirttiğimiz tanımlamalarla şu şekilde bir döküman oluşturuyoruz.

Bu şekilde bir XML dökümanı oluşturmak tek bir verimiz olursa mantıklı olabilir ancak elimizde büyük miktarda veriler olduğunda bu yöntemi kullanmak çok zor olabilir.Çok sayıda verimiz olduğunda bir array oluşturup bu array içerisinde attribute leri tanımlayıp bu arrayi kullanarak döküman oluşturabiliriz.

var data = new[] {
new{ ID=1,Adi="Ahmet"},
new{ ID=8,Adi="Ibrahim"},
new{ ID=3,Adi="Mehmet"}
};
var yapısı bildiğimiz gibi C# 3.0 ile yapı.Tipi belli olmayan değişkenler için kullanıyoruz.
Bu yapıyı bir elemente eklemek istersek;
XElement kisiler = new XElement("Kisiler",
from c in data
select
new XElement("Kisi",
new XAttribute("ID", c.ID),
new XElement("Adi", c.Adi)));
Console.WriteLine(kisiler.ToString());

Burada yazdığımız tek bir ifade ile döngü kullanmadan tüm içeriği ekleyebiliriz.c derken array içindeki new ile yaratılan bir yapıyı kastediyoruz.Böylece sırayla tüm array dolaşılarak istenilen yapılar XML'e dönüştürülüyor.Oluşturduğumuz elementi yazdırırsak ;

Daha derin detayları ve özellikle döküman içerisinde yapılan sorgulamaları bir sonraki makalemde bulabileceksiniz.
Kullandığım kodları indirmek için tıklayın.
İyi Geceler

0 yorum: