Cara Membaca XML di C#

Cara Membaca Xml Di C



Format data yang banyak digunakan untuk berbagi data internet adalah XML, karena data dapat disimpan di dalamnya dan dipertukarkan antar sistem dengan cara yang fleksibel dan mudah digunakan. Di C#, membaca file XML adalah tugas umum, dan kerangka kerja .NET menyediakan berbagai kelas dan metode untuk mem-parsing dan membaca file XML. Posting ini akan membahas penggunaan framework .NET untuk membaca XML dalam C#.

Membaca XML dalam C#

Ada beberapa cara untuk membaca file XML dalam C# dan setiap metode memiliki kelebihan dan kekurangan, dan pilihannya bergantung pada kebutuhan proyek. Di bawah ini adalah beberapa cara untuk membaca file XML di C#:

Berikut adalah isi file XML yang telah saya buat dan akan digunakan untuk demonstrasi dalam metode yang akan datang:







< ?xml Versi: kapan = '1.0' pengkodean = 'utf-8' ? >
< karyawan >
< karyawan >
< pengenal > 1 pengenal >
< nama > Sam bos nama >
< departemen > Pemasaran departemen >
< gaji > 50000 gaji >
karyawan >
< karyawan >
< pengenal > 2 pengenal >
< nama > Jane Doe nama >
< departemen > Keuangan departemen >
< gaji > 60000 gaji >
karyawan >
< karyawan >
< pengenal > 3 pengenal >
< nama > Yakobus nama >
< departemen > Sumber daya manusia departemen >
< gaji > 70000 gaji >
karyawan >
karyawan >

1: Menggunakan XmlDocument

Untuk membaca file XML di C#, Anda bisa menggunakan kelas XmlDocument atau kelas XDocument, keduanya merupakan bagian dari namespace System.Xml. Kelas XmlDocument menyediakan pendekatan DOM (Document Object Model) untuk membaca XML, sedangkan kelas XDocument menyediakan pendekatan LINQ (Language-Integrated Query). Berikut adalah contoh penggunaan kelas XmlDocument untuk membaca file XML:



menggunakan Sistem;
menggunakan Sistem.Xml;

Program kelas
{
kekosongan statis Utama ( rangkaian [ ] argumen )
{
XmlDocument doc = XmlDocument baru ( ) ;
doc.Load ( 'karyawan.xml' ) ;

Node XmlNodeList = doc.DocumentElement.SelectNodes ( '/karyawan/karyawan' ) ;

untuk setiap ( simpul XmlNode di dalam node )
{
rangkaian pengenal = node.SelectSingleNode ( 'pengenal' ) .InnerText;
nama string = node.SelectSingleNode ( 'nama' ) .InnerText;
departemen string = node.SelectSingleNode ( 'departemen' ) .InnerText;
string gaji = node.SelectSingleNode ( 'gaji' ) .InnerText;
Console.WriteLine ( 'ID: {0}, Nama: {1}, Departemen: {2}, Gaji: {3}' , pengenal , nama, departemen, gaji ) ;
}
}
}

Kode ini menggunakan kelas XmlDocument untuk memuat file XML dan metode SelectNodes untuk mengambil daftar node karyawan. Kemudian, untuk setiap node karyawan, ia menggunakan metode SelectSingleNode untuk mengambil nilai id, nama, departemen, dan node anak gaji dan menampilkannya menggunakan Console.WriteLine:







2: Menggunakan XDocument

Alternatifnya, Anda juga bisa menggunakan kelas XDocument untuk membaca file XML menggunakan pendekatan LINQ, dan di bawah ini adalah kode yang mengilustrasikan cara melakukannya:

menggunakan Sistem;

Program kelas
{
kekosongan statis Utama ( rangkaian [ ] argumen )
{
XDocument doc = XDocument.Load ( 'karyawan.xml' ) ;

untuk setiap ( Elemen XElemen di dalam doc.Keturunan ( 'karyawan' ) )
{
int pengenal = int.Parse ( elemen.Elemen ( 'pengenal' ) .Nilai ) ;
nama string = elemen.Elemen ( 'nama' ) .Nilai;
string departemen = element.Element ( 'departemen' ) .Nilai;
int gaji = int.Parse ( elemen.Elemen ( 'gaji' ) .Nilai ) ;
Console.WriteLine ( $ 'ID: {id}, Nama: {name}, Departemen: {department}, Gaji: {salary}' ) ;
}
}
}

File XML dimuat ke objek XDocument menggunakan metode XDocument.Load. Elemen 'pegawai' file XML kemudian semuanya diambil menggunakan teknik Keturunan. Untuk setiap elemen, elemen turunannya diakses menggunakan metode Elemen, dan nilainya diekstrak menggunakan properti Value. Terakhir, data yang diekstrak dicetak ke konsol.



Perhatikan bahwa XDocument termasuk dalam namespace System.Xml.Linq, jadi Anda harus menyertakan pernyataan using berikut di bagian atas file C# Anda

3: Menggunakan XmlReader

XmlReader adalah cara yang cepat dan efisien untuk membaca file XML di C#. Itu membaca file secara berurutan, yang berarti hanya memuat satu node pada satu waktu, membuatnya ideal untuk bekerja dengan file XML besar yang sulit ditangani di memori.

menggunakan Sistem;
menggunakan Sistem.Xml;

Program kelas
{
kekosongan statis Utama ( rangkaian [ ] argumen )
{
menggunakan ( Pembaca XmlReader = XmlReader.Buat ( 'karyawan.xml' ) )
{
ketika ( pembaca.Baca ( ) )
{
jika ( reader.NodeType == XmlNodeType.Element && pembaca.Nama == 'karyawan' )
{
Console.WriteLine ( 'PENGENAL: ' + pembaca.GetAttribute ( 'pengenal' ) ) ;
reader.ReadToDescendant ( 'nama' ) ;
Console.WriteLine ( 'Nama:' + pembaca.ReadElementContentAsString ( ) ) ;
reader.ReadToNextSibling ( 'departemen' ) ;
Console.WriteLine ( 'Departemen:' + pembaca.ReadElementContentAsString ( ) ) ;
reader.ReadToNextSibling ( 'gaji' ) ;
Console.WriteLine ( 'Gaji: ' + pembaca.ReadElementContentAsString ( ) ) ;
}
}
}
}
}

Dalam contoh ini, kami menggunakan metode XmlReader.Create untuk membuat instance XmlReader dan meneruskan jalur file XML sebagai parameter. Kami kemudian menggunakan while loop untuk membaca file XML node demi node menggunakan metode Read dari XmlReader.

Di dalam loop, pertama-tama kita periksa apakah node saat ini adalah elemen karyawan menggunakan properti NodeType dan Name dari XmlReader. Jika demikian, kami menggunakan metode GetAttribute untuk mengambil nilai atribut id.

Selanjutnya, kami menggunakan metode ReadToDescendant untuk memindahkan pembaca ke elemen nama di dalam elemen karyawan. Nilai elemen nama kemudian diperoleh dengan menggunakan fungsi ReadElementContentAsString.

Demikian pula, kami menggunakan metode ReadToNextSibling untuk memindahkan pembaca ke elemen saudara berikutnya dan mendapatkan nilai elemen departemen dan gaji.

Akhirnya, kami menggunakan menggunakan blok untuk memastikan bahwa objek XmlReader dibuang dengan benar setelah kami selesai membaca file XML:

4: XML ke LINQ

Membaca file XML menggunakan LINQ ke XML dalam C# adalah cara ampuh untuk mengakses dan memanipulasi data XML. LINQ to XML adalah komponen teknologi LINQ yang menyediakan API sederhana dan efisien untuk bekerja dengan data XML.

menggunakan Sistem;
menggunakan System.Linq;
menggunakan System.Xml.Linq;

Program kelas
{
kekosongan statis Utama ( rangkaian [ ] argumen )
{
XDocument doc = XDocument.Load ( 'karyawan.xml' ) ;

var karyawan = dari e di dalam doc.Keturunan ( 'karyawan' )
Pilih baru
{
Id = e.Elemen ( 'pengenal' ) .Nilai,
Nama = e.Elemen ( 'nama' ) .Nilai,
Departemen = e.Element ( 'departemen' ) .Nilai,
Gaji = e.Elemen ( 'gaji' ) .Nilai
} ;
untuk setiap ( karyawan var di dalam karyawan )
{
Console.WriteLine ( $ 'Id: {employee.Id}, Nama: {employee.Name}, Departemen: {employee.Department}, Gaji: {employee.Salary}' ) ;
}
}
}

Dalam kode ini, pertama-tama kita memuat file XML menggunakan metode XDocument.Load(). Kemudian, kami menggunakan LINQ ke XML untuk menanyakan data XML dan memilih elemen id, nama, departemen, dan gaji untuk setiap elemen karyawan. Kami menyimpan data ini dalam jenis anonim dan kemudian menelusuri hasilnya untuk mencetak informasi karyawan ke konsol.

5: Menggunakan XPath

XPath adalah bahasa kueri yang digunakan untuk menavigasi dokumen XML untuk menemukan elemen, atribut, dan node tertentu. Ini adalah alat yang efektif untuk mencari dan memfilter informasi dalam dokumen XML. Di C#, kita bisa menggunakan bahasa XPath untuk membaca dan mengekstrak data dari file XML.

menggunakan Sistem;
menggunakan System.Xml.XPath;
menggunakan Sistem.Xml;

Program kelas
{
kekosongan statis Utama ( rangkaian [ ] argumen )
{
XmlDocument doc = XmlDocument baru ( ) ;
doc.Load ( 'karyawan.xml' ) ;

// Buat XPathNavigator dari dokumen
XPathNavigator nav = doc.BuatNavigator ( ) ;

// Kompilasi ekspresi XPath
XPathExpression expr = nav.Kompilasi ( '/karyawan/karyawan/nama' ) ;

// Evaluasi ekspresi dan lakukan iterasi melalui hasilnya
Iterator XPathNodeIterator = nav.Select ( expr ) ;
ketika ( iterator.MoveNext ( ) )
{
Console.WriteLine ( iterator.Current.Value ) ;
}
}
}

Kode ini memuat file “employees.xml” menggunakan XmlDocument, membuat XPathNavigator dari dokumen, dan mengompilasi ekspresi XPath untuk memilih semua elemen di bawah elemen . Ini kemudian mengevaluasi ekspresi dan mengulangi hasilnya, mencetak nilai setiap elemen .

Catatan: menggunakan XPath bisa menjadi cara yang andal dan fleksibel untuk memilih elemen dan atribut dari dokumen XML, tetapi juga bisa lebih rumit daripada beberapa metode lain yang telah kita bahas.

Kesimpulan

Menggunakan kelas XmlDocument menyediakan kemampuan manipulasi DOM penuh, tetapi bisa lebih lambat dan lebih intensif memori daripada metode lainnya. Kelas XmlReader adalah opsi yang baik untuk membaca file XML besar, karena menyediakan pendekatan berbasis aliran yang cepat, hanya maju, dan tidak di-cache. Kelas XDocument menyediakan sintaks yang lebih sederhana dan ringkas, tetapi mungkin kinerjanya tidak sebaik XmlReader. Selain itu, metode LINQ ke XML dan XPath memberikan kemampuan kueri yang kuat untuk mengekstrak data tertentu dari file XML.