C#'ta XML Nasıl Okunur?

C Ta Xml Nasil Okunur



İnternet veri paylaşımı için yaygın olarak kullanılan veri biçimi XML'dir, çünkü veriler içinde depolanabilir ve sistemler arasında esnek ve kullanıcı dostu bir şekilde değiş tokuş edilebilir. C#'ta, XML dosyalarını okumak yaygın bir görevdir ve .NET çerçevesi, XML dosyalarını ayrıştırmak ve okumak için çeşitli sınıflar ve yöntemler sağlar. Bu gönderi, C# dilinde XML okumak için .NET çerçevesini kullanmayı ele alacaktır.

C# dilinde XML okuma

C# dilinde bir XML dosyasını okumanın birkaç yolu vardır ve her yöntemin avantajları ve dezavantajları vardır ve seçim, projenin gereksinimlerine bağlıdır. C# dilinde bir XML dosyasını okumanın bazı yolları aşağıda verilmiştir:

İşte oluşturduğum ve gelecek yöntemlerde gösterim için kullanacağım XML dosyasının içeriği:







< ?xml sürüm = '1.0' kodlama = 'utf-8' ? >
< çalışanlar >
< çalışan >
< İD > 1 İD >
< isim > sam bosh isim >
< departman > Pazarlama departman >
< maaş > 50000 maaş >
çalışan >
< çalışan >
< İD > 2 İD >
< isim > Jane Doe isim >
< departman > finans departman >
< maaş > 60000 maaş >
çalışan >
< çalışan >
< İD > 3 İD >
< isim > James isim >
< departman > İnsan kaynakları departman >
< maaş > 70000 maaş >
çalışan >
çalışanlar >

1: XmlDocument'i Kullanma

C# dilinde bir XML dosyasını okumak için, her ikisi de System.Xml ad alanının parçası olan XmlDocument sınıfını veya XDocument sınıfını kullanabilirsiniz. XmlDocument sınıfı, XML okumak için bir DOM (Belge Nesne Modeli) yaklaşımı sunarken, XDocument sınıfı bir LINQ (Dil ile Tümleşik Sorgu) yaklaşımı sağlar. İşte bir XML dosyasını okumak için XmlDocument sınıfını kullanan bir örnek:



Sistemi kullanarak;
System.Xml kullanarak;

sınıf Programı
{
statik boşluk Ana ( sicim [ ] argümanlar )
{
XmlDocument belgesi = yeni XmlDocument ( ) ;
doc.Yükle ( 'çalışanlar.xml' ) ;

XmlNodeList düğümleri = doc.DocumentElement.SelectNodes ( '/çalışanlar/çalışanlar' ) ;

her biri için ( XmlNode düğümü içinde düğümler )
{
sicim İD = düğüm.SelectSingleNode ( 'İD' ) .İç Metin;
dize adı = düğüm.SelectSingleNode ( 'isim' ) .İç Metin;
dizi bölümü = node.SelectSingleNode ( 'departman' ) .İç Metin;
dizi maaşı = node.SelectSingleNode ( 'maaş' ) .İç Metin;
Konsol.WriteLine ( 'Kimlik: {0}, Ad: {1}, Bölüm: {2}, Maaş: {3}' , İD , isim, departman, maaş ) ;
}
}
}

Bu kod, XML dosyasını yüklemek için XmlDocument sınıfını ve çalışan düğümlerinin listesini almak için SelectNodes yöntemini kullanır. Ardından, her çalışan düğümü için kimlik, ad, departman ve maaş alt düğümlerinin değerlerini almak için SelectSingleNode yöntemini kullanır ve bunları Console.WriteLine kullanarak görüntüler:







2: XDocument'ı Kullanma

Alternatif olarak, bir LINQ yaklaşımı kullanarak bir XML dosyasını okumak için XDocument sınıfını da kullanabilirsiniz ve bunun nasıl yapıldığını gösteren kod aşağıdadır:

Sistemi kullanarak;

sınıf Programı
{
statik boşluk Ana ( sicim [ ] argümanlar )
{
XDocument belgesi = XDocument.Load ( 'çalışanlar.xml' ) ;

her biri için ( XElement öğesi içinde doc.Torunları ( 'çalışan' ) )
{
int İD = int.Ayrıştır ( eleman.Element ( 'İD' ) .Değer ) ;
dize adı = element.Element ( 'isim' ) .Değer;
dize bölümü = element.Element ( 'departman' ) .Değer;
int maaş = int.Ayrıştır ( eleman.Element ( 'maaş' ) .Değer ) ;
Konsol.WriteLine ( $ 'Kimlik: {kimlik}, Ad: {isim}, Bölüm: {bölüm}, Maaş: {maaş}' ) ;
}
}
}

XML dosyası, XDocument.Load yöntemi kullanılarak bir XDocument nesnesine yüklenir. XML dosyasının 'çalışan' öğelerinin tümü daha sonra Descendants tekniği kullanılarak alınır. Her öğe için, alt öğelerine Element yöntemi kullanılarak erişilir ve değerleri, Value özelliği kullanılarak çıkarılır. Son olarak, çıkarılan veriler konsola yazdırılır.



XDocument'in System.Xml.Linq ad alanına ait olduğunu unutmayın, bu nedenle C# dosyanızın en üstüne aşağıdaki using deyimini eklemeniz gerekir.

3: XmlReader'ı Kullanma

XmlReader, C# dilinde bir XML dosyasını okumanın hızlı ve etkili bir yoludur. Dosyayı sıralı olarak okur, bu da her seferinde yalnızca bir düğüm yüklediği anlamına gelir; bu da onu, başka türlü bellekte işlenmesi zor olacak büyük XML dosyalarıyla çalışmak için ideal hale getirir.

Sistemi kullanarak;
System.Xml kullanarak;

sınıf Programı
{
statik boşluk Ana ( sicim [ ] argümanlar )
{
kullanarak ( XmlReader okuyucu = XmlReader.Create ( 'çalışanlar.xml' ) )
{
sırasında ( okuyucu.Oku ( ) )
{
eğer ( reader.NodeType == XmlNodeType.Element && okuyucu.Ad == 'çalışan' )
{
Konsol.WriteLine ( 'kimlik:' + okuyucu.GetAttribute ( 'İD' ) ) ;
okuyucu.ReadToDescendant ( 'isim' ) ;
Konsol.WriteLine ( 'İsim: ' + okuyucu.ReadElementContentAsString ( ) ) ;
reader.ReadToNextSibling ( 'departman' ) ;
Konsol.WriteLine ( 'Departman: ' + okuyucu.ReadElementContentAsString ( ) ) ;
reader.ReadToNextSibling ( 'maaş' ) ;
Konsol.WriteLine ( 'Maaş: ' + okuyucu.ReadElementContentAsString ( ) ) ;
}
}
}
}
}

Bu örnekte, bir XmlReader örneği oluşturmak ve XML dosya yolunu bir parametre olarak iletmek için XmlReader.Create yöntemini kullanıyoruz. Daha sonra, XmlReader'ın Read yöntemini kullanarak XML dosya düğümünü düğüm düğüm okumak için bir while döngüsü kullanırız.

Döngü içinde, önce XmlReader'ın NodeType ve Name özelliklerini kullanarak geçerli düğümün çalışan bir öğe olup olmadığını kontrol ederiz. Öyleyse, id özniteliğinin değerini almak için GetAttribute yöntemini kullanırız.

Ardından, okuyucuyu çalışan öğesinin içindeki ad öğesine taşımak için ReadToDescendant yöntemini kullanıyoruz. name öğesinin değeri daha sonra ReadElementContentAsString işlevi kullanılarak elde edilir.

Benzer şekilde, okuyucuyu bir sonraki kardeş öğeye taşımak ve departman ve maaş öğelerinin değerini almak için ReadToNextSibling yöntemini kullanıyoruz.

Son olarak, XML dosyasını okumayı bitirdikten sonra XmlReader nesnesinin düzgün bir şekilde atıldığından emin olmak için using bloğunu kullanırız:

4: XML'den LINQ'e

C# dilinde LINQ to XML kullanarak bir XML dosyasını okumak, XML verilerine erişmenin ve bunları işlemenin güçlü bir yoludur. LINQ to XML, XML verileriyle çalışmak için basit ve verimli bir API sağlayan LINQ teknolojisinin bir bileşenidir.

Sistemi kullanarak;
System.Linq kullanarak;
System.Xml.Linq kullanarak;

sınıf Programı
{
statik boşluk Ana ( sicim [ ] argümanlar )
{
XDocument belgesi = XDocument.Load ( 'çalışanlar.xml' ) ;

var çalışanlar = e'den içinde doc.Torunları ( 'çalışan' )
seçme yeni
{
Kimlik = e.Öğe ( 'İD' ) .Değer,
İsim = e.Öğe ( 'isim' ) .Değer,
Departman = e.Öğe ( 'departman' ) .Değer,
Maaş = e.Öğe ( 'maaş' ) .Değer
} ;
her biri için ( Var çalışanı içinde çalışanlar )
{
Konsol.WriteLine ( $ 'Id: {employee.Id}, Ad: {employee.Name}, Departman: {employee.Department}, Maaş: {employee.Salary}' ) ;
}
}
}

Bu kodda öncelikle XDocument.Load() metodunu kullanarak XML dosyasını yüklüyoruz. Ardından, XML verilerini sorgulamak ve her çalışan öğesi için kimlik, ad, departman ve maaş öğelerini seçmek için LINQ to XML kullanıyoruz. Bu verileri anonim bir türde saklarız ve ardından çalışan bilgilerini konsola yazdırmak için sonuçlar arasında döngü yaparız.

5: XPath Kullanma

XPath, belirli öğeleri, nitelikleri ve düğümleri bulmak için bir XML belgesinde gezinmek için kullanılan bir sorgulama dilidir. Bir XML belgesinde bilgi arama ve filtreleme için etkili bir araçtır. C#'ta, XML dosyalarından veri okumak ve çıkarmak için XPath dilini kullanabiliriz.

Sistemi kullanarak;
System.Xml.XPath kullanarak;
System.Xml kullanarak;

sınıf Programı
{
statik boşluk Ana ( sicim [ ] argümanlar )
{
XmlDocument belgesi = yeni XmlDocument ( ) ;
doc.Yükle ( 'çalışanlar.xml' ) ;

// Belgeden bir XPathNavigator oluşturun
XPathNavigator gezinme = doc.CreateNavigator ( ) ;

// XPath ifadesini derleyin
XPathExpression ifade = gezinti.Derleme ( '/çalışanlar/çalışan/isim' ) ;

// İfadeyi değerlendirin ve sonuçları yineleyin
XPathNodeIterator yineleyici = nav.Select ( ifade ) ;
sırasında ( yineleyici.MoveNext ( ) )
{
Konsol.WriteLine ( iterator.Current.Value ) ;
}
}
}

Bu kod, bir XmlDocument kullanarak “employees.xml” dosyasını yükler, belgeden bir XPathNavigator oluşturur ve öğeleri altındaki tüm öğelerini seçmek için bir XPath ifadesi derler. Daha sonra ifadeyi değerlendirir ve her bir öğesinin değerini yazdırarak sonuçları yineler.

Not: XPath kullanmak, bir XML belgesinden öğeler ve nitelikler seçmenin güçlü ve esnek bir yolu olabilir, ancak tartıştığımız diğer bazı yöntemlerden daha karmaşık da olabilir.

Çözüm

XmlDocument sınıfını kullanmak, tam DOM işleme yetenekleri sağlar, ancak diğer yöntemlere göre daha yavaş ve daha fazla bellek yoğun olabilir. XmlReader sınıfı, hızlı, salt ileri ve önbelleğe alınmamış akış tabanlı bir yaklaşım sağladığından büyük XML dosyalarını okumak için iyi bir seçenektir. XDocument sınıfı daha basit ve özlü bir sözdizimi sağlar, ancak XmlReader kadar performanslı olmayabilir. Ek olarak, LINQ to XML ve XPath yöntemleri, bir XML dosyasından belirli verileri ayıklamak için güçlü sorgulama yetenekleri sağlar.