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: bilgileri edilen farkli ilgili iliskin kullanilan main() nesnesinin sinifi sorgulamak sorgusu static xmldocument xmlnode xmlreader 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 : 12.5.2005
Okunma Sayısı : 43445
Yorum Sayısı : 7     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 28.3.2024
Turhal Temizer
Mac OS/X Removing CUDA 28.3.2024
Burak Selim Şenyurt
Kurumsal Yazılımcının Oyun Geliştirme ile İmtihanı 28.3.2024
Burak Selim Şenyurt
Matematik ve Oyun Programlama - Missile Command - Final 28.3.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 2
 
Kapat
Sayfayı Yazdır Sık Kullanılanlara Ekle Arkadaşıma Gönder MySpace Del.Ico.Us Digg Facebook Google Mixx Reddit StumbleUpon
System.XML kütüphanesini incelemeye devam edelim. Xml belgelerinde veri sorgulamak için üç farklı sınıf mevcuttur. Bunlar bir önceki makalemizde ayrıntılı olarak imcelediğimiz XmlDocument diğer ikisi de  XmlDataDocument ve XPathDocument sınıflarıdır. XmlDataDocument sınıfı diğer iki sınıftan farklı olarak bir dosya yerine kaynak olarak bir dataset ile senkronize olabilmesidir. Bunun dışında metodlar ve kullanım şekilleri biribirine çok benzemektedir. Xml dökümanını sorgulamak için bu üç sınıfta da ortak olarak uygun XPaht sorgusu ile birlikte SelectSingeNode ve SelectNodes metodları kullanırlar.

Örneklerimizde kullanacağımız xml dökümanı aşağıdaki gibi olsun.

Şekil  1: Örneklerde kullanacak xml dökümanı

SelectSingelNode : Bir xml dökümanının sadece bir düğümünü sorgulamak için kullanılır.

using System;

using System.Xml;

public class XmlUygulama {

public static void Main() {

     XmlDocument myDoc = new XmlDocument();

     myDoc.Load("myXML.xml");

     XmlNode NodeBook; // işlem yapacağımız düğüm satırı

     NodeBook = myDoc.DocumentElement.SelectSingleNode("book[@ISBN=’1-861002-30-1’]"); //XPath sorgusu book düğümündeki ISBN niteliğinin değer =’1-861002-30-1’ olan düğüm anlamına gelir

    Console.WriteLine(NodeBook.OuterXml);

 } }

Kod1 : SelectSingelNode metodunun  kullanımı

Şekil 2 : SelectSingelNode için yapılan uygulamanın ekran görüntüsü,

SelecetNodes : Bir xml dökümanından birden fazla düğüm seçmek için kullanılır.

public static void Main() {

      XmlDocument myDoc = new XmlDocument();  

      myDoc.Load("myXML.xml"); XmlNodeList NodeList;

      NodeList = myDoc.DocumentElement.SelectNodes("/bookstore/book/@title"); //XPath sorgusu xml belgesinde book düğümündeki title niteliğindeki değerlerin hepsini alır

      foreach (XmlNode adi in NodeList)

             Console.WriteLine(adi.Value);

 }

Kod2 : SelectNodes metodunun  kullanımı

Şekil 3 : SelectNodes metodunun kullanıma ilişkin örneğin ekran çıktısı

System.Xml kütüphanesinde sık kullanılan terimlere şöyle bir göz atalım.

InnerXML : Kullanılan düğüme ilişkin yavru düğümleri ve bu yavru düğümlere ait bilgileri verir.

OuterXML : Kulanılan düğüme ait bütün nitelikleri, bilgileri ve yavru düğümleri bilgileri ile verir.

Bu iki özelliğin arasındaki farkı aşağıdaki ekran çıktısında da görebilirsiniz. İlk resimde OuterXML özelliği kullanılmış. İkinci resimde de InnerXML özelliği .

 

Şekil 4 : Seçili düğümün OuterXML özelliği kullanılarak elde edilen ekran çıktısı

Şekil 5 : Seçili düğümün InnerXML özelliği kullanılarak elde edilen ekran çıktısı

ChildNodes : Kullanılan düğüme ait olan yavru düğümleri XmlNode kolleksiyonu şeklinde verir.

NextSibling : Kullanılan düğümden hemen sonra gelen düğümü XmlNode sınıfı türünden verir.

PreviousSibling :Kullanılan düğümden bir önceki düğümü XmlNode sınıfı türünden verir

ParentNode : Kullanılan düğümü kapsayan ana düğümü  XmlNode sınıfı türünden verir.

HasChildNode : Kullanılan düğüm başka düğümler içeriyorsa true değerini geri döndürür.

FirstChild : İlgili dökümanın ilk düğümünü  XmlNode sınıf türünden verir.

LastChild : İlgili döküman nesnesinin son düğümünü XmlNode sınıfı türünden verir.

Copy : İlgili düğümün XmlNode sınıf türünden niteliklerin içeği olmadan kopyasın alır.

Clone(bool) : İlgili düğümün XmlNode sınıfı türünden tüm nitelikleri ve değerleri ile birlikte kopyasının alınmasını sağlar. Parametre olarak aldığı boolen değere göre kopyalama işlemini yapar. Boolean değer true ise ilgili düğümün sahip olduğu yavru düğümleri ve bu yavru düğümlerin bütün nitelik ve bilgilerini de alır. Boolena değer false ise sadece ilgili düğümün bilgilerini ve değerlerini yavru düğümler olmadan alır.

XmlDataReader Sınıfı

System.Xml kütüphanesin XmlReader ve buna benzeyen üç farklı sınıf içermektedir. Bu sınflar XmlTextReader, XmlNodeReader ve  XmlValidatingReader dır. Bir dosyadan veya karakter katarından elde edilen xml belgesi sadece okumak amacı ile kullanılacaksa bu sınfların tercih edilmesi performan açısından oldukça önemlidir.

XmlTextReader : Bir dosyadan, bir karakter katarından veya bir girdi akışından okuma yapmayı sağlayan sınıftır. Xml belgesinin geçerliliğini kontrol eder ve biçimi uygun değilse XMLException türünden hata üretir. Oluşan XmlException sayesinde hatanın nerden kaynaklandığını kolaylıkla bulunması sağlanır.

XmlValidatingReader : XmlTextReader  oldukça benzemektedir. Fakat XmlValidatingReader bir şema yada DTD(DataType Definition) yardımı ile xml belgesinin geçerliliğini denetleme yeteneğine sahiptir.  XmlValidatingReader  sınıfı okuna xml ’in geçerlilik denetimi yapabilem konusunda oldukça iyidir ama  XmlTextReader  kadar randıman sağlamaz ve özellikleri kısıtlıdır.

XmlNodeReader : Doğrudan bellekten çalıştığı için diğer sınıflar arasında en hızlı olanıdır. Ayrıca okunan xml in geçerliliğini denetlemek zorunda değildir. Bir belgenin tümünü yada sadece dökümanın bir kısmını okuyabilir.

XmlReader ve benzeri sınıfların ortak olarak kullandıkları metodlara şöyle bir göz gezdirelim.

Read() : Kullanılan readerın bir sonraki düğümünü okur. Read işlemi sonucunda işlem başarıyla gerçekleşmişse true değerini döndürür; eğer dosya sonuna gelmiş ise false değerinin döndürür.

AttributeCount : Mevcut düğümdeki niteliklerin sayısını verir.

HasAttribute : Düğüm niteliğe sahip ise true değeri döndürür aksi halde false değeri geri döner.

MoveToAttribute : Okunan düğümün ilgili niteliğinin bilgilerini verir.Aşırı yüklenmiş bir kaç versiyonu vardır.

EOF : XmlReader nesnesinin sonuna gelip gelinmediğinin kontrolunu yapar. Boolena değer geri döndürür.

Yazmış olduğumuz metodları bir örnekle inceliyelim.

public static void Main() {

      XmlTextReader xmlRd = new XmlTextReader("myXML.xml");

      while (xmlRd.Read()) {

      Console.WriteLine(xmlRd.LocalName);

      Console.WriteLine(xmlRd.NodeType);

      if(xmlRd.HasAttributes)

            for (int i = 0; i < xmlRd.AttributeCount; i++) {

                   xmlRd.MoveToAttribute(i);

                   Console.Write(" {0}={1}", xmlRd.Name, xmlRd.Value);

              }

 } }

Kod3 : XmlTextReader kullanımı

XmlReader’ın kullanımına ilişkin bir örnek daha yapalım. Bu örnekte de Sql Server da FOR XML AUTO komutu sayesinde elde edeceğimiz veriyi xml olarak alabiliyoruz. Ve command nesnesinin ExecuteXmlReader metodu  geriye XmlReader  sınıfından değer döndürür. 

public static void Main() {

      SqlConnection con = new SqlConnection("Integrated Security=SSPI;Initial Catalog=Northwind;Data Source=YEKBUN;Workstation ID=YEKBUN");

      con.Open();

      XmlReader myXmlReader;

      SqlCommand cmd = new SqlCommand("SELECT CategoryID, CategoryName FROM Categories FOR XML AUTO",con);

      myXmlReader = cmd.ExecuteXmlReader();

      myXmlReader.Read();

      myXmlReader.MoveToContent() ;

      while (! myXmlReader.EOF) 

           Console.WriteLine(myXmlReader.ReadOuterXml()) ;

     myXmlReader.Close();

}

Kod4 : XmlReader kullanımı

Şekil 6 : XmlReader kullanımına ilişkin örneğin ekran görüntüsü

Bu makelmizde de .Net’in System.Xml kütüphanesin  karışık görünen xml dosyalarının okunmasını ve işlenmesini ne kadar kolaylaştırdığını gördük. Bir sonraki makalemizde görüşmek ümidi ile.

Makale:
System.Xml Kütüphanesi 2 XML ve Web Servisleri Feryat Olcay
  • Yazılan Yorumlar
  • Yorum Yaz
TEM
4
2014
peki elimizde rastgele ürettiğimiz bir stringi xml dökümanı şeklinde nasıl gösterebiliriz acaba yardımcı olabilirmisiniz
HAZ
28
2014
yazanın eline sağlık cok yararlı oldu teşekkürler..
HAZ
28
2014
yazanın eline sağlık cok yararlı oldu teşekkürler..
HAZ
28
2014
yazanın eline sağlık cok yararlı oldu teşekkürler..
HAZ
28
2014
yazanın eline sağlık cık yararlı oldu teşekkürler..
KAS
8
2009
yani herşey güzel. gayet iyi anlatılmış ama şu kodları ve ilgili açıklamlaarı alt alta yazsaydaınız daha iyi olmaz mıydı. anlamak için olağan üstü bi çaba sarfediyorum. hatta yazıyı worde alıp alt alta olacka şekilde ayarladım anca anlıyorum. yönetici arkadaşlar ilgilenirseniz sevinriim.
ARA
29
2006
Merhabalar xnlPCatalog = Xdoc.DocumentElement.SelectNodes(PRODUCTCATALOG Bu şekilde düğümü okuyrum... Yanlız benim sorunum Xml dosyasında PRODUCTCATALOG xmlns=http:site.comCSchema.xsd Oldugu zaman okuyamıyorum PRODUCTCATALOG bu şekilde oldugu zaman sorunsuz okya biliyoerum bu sorunu nasıl düzelte bilirim. nasıl bi ekleme yapmam lazım yardımcı olursanız sevinirim. xnlPCatalog = Xdoc.DocumentElement.SelectNodes(PRODUCTCATALOG)
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