Bu site emekli olmuştur. Arşiv amaçlı olarak BT AKADEMİ sponsorluğunda yayın hayatına devam etmektedir.




C#nedir?com
 
YAZAR HAKKINDA
Feryat Olcay
Feryat Olcay
http://www.csharpnedir.com/
İletişme geçmek için tıklayın.
15 Makalesi yayınlanmakta.
Yazar hakkında detaylı bilgi için tıklayın.
Yayınlanan diğer makaleleri için tıklayın.
İlgili etiketler: belgesi belgesinde belgesindeki belgesini belgesinin bilgilerin bulunan dataset ilgili kullanacagimiz metodu nesnesine nesnesinin xmldocument yapisini XML / Web Serv. Feryat Olcay
 
YAZI HAKKINDA
Türü : Makale
Serbest Köşede C#nedir?com üyelerinin hazırladıkları yazılar yayınlanır. Bu yazılar editör incelemesine girmeden yayınlanır.
Seviyesi : Orta
Kategori : XML / Web Serv.
Yayınlanma Tarihi : 11.4.2005
Okunma Sayısı : 48581
Yorum Sayısı : 2     yorum yaz
Site İçi AramaSİTE İÇİ ARAMA
Üye Girişini AçÜye GİRİŞİ
Üye girişi için tıklayın.
Kullanıcı Adı
Şifre
 
Beni her zaman hatırla
Bir hafta boyunca kullanıcı bilgilerinizi kullanıcı çıkışı yapana kadar hatırlar. (Paylaşılan bilgisayarlarda önerilmez.)
 
Şifremi / Kullanıcı Adımı unuttum.
 
.net TV RSS Serbest KÖŞE (?)
Serbest Köşede C#nedir?com üyelerinin hazırladıkları yazılar yayınlanır. Bu yazılar editör incelemesine girmeden yayınlanır.
emre TAŞ
Silindi
emre TAŞ
yazının devamı >
emre TAŞ
silindi
emre TAŞ
yazının devamı >
emre TAŞ
silindi
emre TAŞ
yazının devamı >
emre TAŞ
silindi
emre TAŞ
yazının devamı >
emre TAŞ
silindi
emre TAŞ
yazının devamı >
Makale Gönder Bende Yazmak İstiyorum
.net TV RSSBlogroll
Turhal Temizer
Conda install environment.yml Package 23.11.2024
Turhal Temizer
Mac OS/X Removing CUDA 23.11.2024
Burak Selim Şenyurt
Rust ile ECS Yaklaşımını Anlamak 23.11.2024
Burak Selim Şenyurt
Birlikte Rust Öğrenelim Serisi 23.11.2024
  Diğer Herşey
Sponsorlar
BT Akademi
Medya Portakal
Video Hosting Sponsoru
Csharpnedir.com bir Ineta üyesidir
Uzman Abi
Her Yönüyle C# - Sefer Algan
System.Xml Kütüphanesi 1
 
Kapat
Sayfayı Yazdır Sık Kullanılanlara Ekle Arkadaşıma Gönder MySpace Del.Ico.Us Digg Facebook Google Mixx Reddit StumbleUpon
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
  • Yazılan Yorumlar
  • Yorum Yaz
ŞUB
7
2014
teşekkürler. çok güzel bir yazı . elinize sağlık.
EYL
9
2009
Aman allahım yıllardır aradığım makale resmen gözlerimin önünde... elinize saglık
Sayfalar : 1 
Yorum yazabilmek için üye girişi yapmalısınız. Üye girişi için tıklayın.
Üye değilseniz Üyel Ol linkine tıklayarak üyeliğinizi hemen başlatabilirisniz.
 
  • Bu Konuda Son 10
  • 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