|
System.Xml Kütüphanesi 1 |
|
Gönderiliyor lütfen bekleyin... |
|
|
XML(eXtensible Markup
Language)in özellikle web uygulamalarında sık sık kullanılması
ve hızla gelişmekte olan ve geleceğin teknolojisi olarak adlandırılan Web
servislerin temelini oluşturması nedeni ile .Net teknolojisinde çok önem
taşımaktadır.
XML belgeleri görsel olarak
şekillendirilmiş metin dosyalarıdır.Var olan sıralı dosya formatında farklı
değildir. Bir xml belgesi düğümler ağacından oluşur. Her düğümde bir öğe,
nitelik açıklama, işlem talimatı veri tipi(CDATA) bölümlerinden oluşmaktadır.
Fakat bir xml belgesi belli kurallara uyan işaretler içerir. Bu nedenle normal
bir metin dosyasından ayrılır. .Net
netkonolojisi görünümde kolay görünen fakat ayrıştılması zor olan bu dosyaları
okumak, kullanımını kolaylaştırmak , işlevselliğini artırmak için
System.XML kütüphanesini oluşturmuştur.
.Net te doğru tanımlanmış bir xml
belgesinde veri okumak, değiştirmek, verilerin konumlarını bulmak için en sık
kullanılan nesne XmlDocument nesnesidir. XmlDocument nesnesinin en büyük
avantajı okuduğu xml belgesini belleğe bir kez yükledikten sonra belgeyi
defalarca kullanmaya izin vermesidir. Ayrıca XmlDocumentin içerisinde bulunan
bilgiyi diğer formatlara çevirmeyi, düğüm ve değerler arasında hızla ilerlemeyi
ve var olan değerlere çabuk ulaşmayı sağlar. XML belgesinin bellekte
gösterimini sağlamak için Belge Nesne Modeli (Document Object Model DOM)
sınıfları kullanılır.
Bugünkü makalemizde ağırlıkı olarak
XmlDocument nenesi üzerinde duracağız. Bir xml belgesinde tutulan kayıtlara
okuma, kayıtları gösterme , değiştirme ve
silme gibi işlemler yapacağız. Ben kullandığım xml belgesinin yapısını okunması
ve işlenmesi daha rahat olduğu için elemet element değilde attribute halinde
tutmayı tercih ettim.
Not:Bu makaleyi daha iyi anlamak için
xml ve yapısını azda olsa bilmeniz gerekmektedir. Bu yüzden öncelikle sitemizde
xml ile ilgili yazılmış olan makaleleri okumanız çok daha iyi olacaktır.
Örneğimizde kullanacağımız xml belgesi.
Şekil 1 : XML belgesinin yapısı,
Yapacağımız örnek için ekran tasarımını
aşağıdaki gibi olsun. XML belgesindeki bilgileri datagridte listeleyecek,
ekleme ,silme ve güncelleme işlemlerini gerçekleştirecek.
Şekil 2 : Ekran
görüntüsü,
İlk kod parcası kullanacağımız nesnelerin
tanımlanması ve xml belgesinin okunması olacak. XmlDocument nesnesinin Load
metodu ile ilgili dosyamızı yüklüyoruz. Load metodunu dört farklı aşırı
yüklenmiş metodu mevcutur. Uygulamın yapısına ve elimizde mevcut olan nesnelere
göre uygun metodu seçebiliriz. Şuan basit olarak dosyanın yolunu
vererek XmlDocument nesnesini dolduracağız.
private
XmlDocument myDoc = new XmlDocument();
private DataSet myDs;
private XmlElement
myElement;
private void LoadXML()
{
myDoc.Load("myXML.xml"); //xml belgesinin xmldocument nesnesine yüklenmesi
}
|
Kod1 : XML
belgesinin xmldocument nesnesine yüklenmesi
İkinci kod örneğimiz ilgili xml belgesindeki bilgilerin datagridte
listelenmesi. Bunun için DataSet nesnesinin ReadXml metodundan faydalanacağız.
private void
LoadDataGrid() {
myDs = new DataSet();
myDs.ReadXml("myXML.xml"); //xml belgesinin dataset nesnesi tarafından okunması
dataGrid1.DataSource = myDs.Tables[0];
}
|
Kod2 : XML belgesinin
okunup dataset nesnesine yüklenmesi
Xml belgesindeki bilgilerin datagritte listelenmesi.
Şekil 2
: Xml belgesindeki verilerin listelenmesi
Makalede sık kullanacağımız bir kaç terimin
açıklamsını yapalım.
XmlNode: Xml belgesinde bulunan
düğümleri temsil eder.
XmlAttribute :Xml belgesinde bulunan
bir düğüme ait nitelik bilgilerini temsil eder.
Aşağıda bulunan kod örneği mevcut XmlDocument
nesnesinde bulunan bir düğümden işlem yapmak için eleman oluşturmak. XmlEleman
nesnesinin GetAttribute metodu ilgili düğümün içinde bulunan
niteliklerdeki verileri almak için kullanılır.
private void dataGrid1_Click(object sender,
System.EventArgs e) {
RowNumber =
dataGrid1.CurrentCell.RowNumber;
myElement =
(XmlElement)myDoc.DocumentElement.ChildNodes[RowNumber];
txtADI.Text =
myElement.GetAttribute("ADI");
txtBOLUM.Text =
myElement.GetAttribute("BOLUM");
txtSOYADI.Text =
myElement.GetAttribute("SOYADI");
txtKODU.Text =
myElement.GetAttribute("KODU");
}
|
Kod3 : Xmldocumet
nesnesindeki bir düğümden eleman oluşturma ve elemanda buluna bilgilerin
okunması
Yeni bir xml düğümünün oluşturulması için öncelikle
var olan belgemizde istenilen düğümün CreateNode metodu ile oluşturulması
gerekir. XmlNodeType seçeneklerine göre oluşturmak istediğiniz düğümün yapısını
belirleyebilirsiniz. XmlNodeType’ı XmlElement olarak oluşturulun XmlNodun
ilgili niteliklerine değerleri atamak için SetAttribute metodundan
faydalanacağız. Aşağıdaki örnek
kodumuzda yeni bir düğüm(node) oluşturduk ve XmlDocument nesnesine
ekledik. XmlDocument nesnesi üzerinde yapılan değişikliklerden sonra
xml belgesini güncellenmesi için XmlDocument nesnesinin Save metodu kullandık.
private void btnKaydet_Click(object sender,
System.EventArgs e) {
try {
if(RowNumber == 0) {
XmlNode newNode = myDoc.CreateNode(XmlNodeType.Element,"EDITOR","");
//Yeni bir düğümün oluşturulması
myDoc.DocumentElement.AppendChild(newNode); // Oluşturulan düğümün belgeye eklenemsi
myElement
=
(XmlElement)newNode; }
else
myElement = (XmlElement)myDoc.DocumentElement.ChildNodes[RowNumber];
myElement.SetAttribute("KODU",txtKODU.Text);
myElement.SetAttribute("ADI",txtADI.Text);
myElement.SetAttribute("SOYADI",txtSOYADI.Text);
myElement.SetAttribute("BOLUM",txtBOLUM.Text);
myDoc.Save("myXML.xml"); //xml belgesinin güncellenmesi
LoadDataGrid();
}
catch(XmlException ex) { MessageBox.Show(ex.Message);
}
}
|
Kod4 : Xmldocumet
nesnesindeki yeni düğüm ekleme ve düğümün niteliklerine veri kaydetme.
Son kon örneğimiz de bir XmlDocument
nesnesinden bir düğümü silmek. Düğüm silmek için hangi düğüm sileceğinizi
seçmenizi tanımladıktan sonra RemoveChild metodu ile silebilirsiniz.
private void btnSil_Click(object sender,
System.EventArgs e) {
XmlNode myNode =
myDoc.DocumentElement.ChildNodes[RowNumber];
myDoc.DocumentElement.RemoveChild(myNode);
//
myDoc.Save("myXML.xml");
LoadDataGrid();
}
|
XmlDocument nesnesinin bu kadar avantajı yanı sıra
dezavantajları da mevcuttur. Çünkü bir xml belgesi Xml
Document nesnesine yüklendikten sonra kullanılan xml belgesini boyutunun iki üç
misli fazlası bellekte yer kaplamaktadır. Bu yüzden eğer sadece okuma amaçlı
kullanacaksanız xml belgesini XML sınıfında buluna XmlReader nesnesini
kullanmanız çok daha yaralı olacaktır. Bir sonraki makalemizde görüşmek üzere.
Örnek uygulama
Makale:
System.Xml Kütüphanesi 1 XML ve Web Servisleri Feryat Olcay
|
|
|
-
-
Eklenen Son 10
-
Bu Konuda Geçmiş 10
Bu Konuda Yazılmış Yazılmış 10 Makale Yükleniyor
Son Eklenen 10 Makale Yükleniyor
Bu Konuda Yazılmış Geçmiş Makaleler Yükleniyor
|
|