Read XML dengan Language Integrated Query(LINQ) pada C#

Mungkin kebanyakan dari kita sudah terbiasa menggunakan SQL query untuk melakukan pengelolaan data. Tapi bagaimana jika kita dihadapkan dengan data dengan berupa format lain, pada kasus ini XML file… Yah, di .netframework sendiri sudah ada sebuah cara mudah membaca XML file yang query nya mirip-mirip dengan SQL query, cara tersebut disebut LINQ(Language Integrated Query). Untuk penjelasan LINQ silahkan anda searching di internet yak😀 , saya disini akan mendemokan sedikit cara menggunakan LINQ untuk membaca XML file..

Okeh, pertama-tama buka visual studio anda, dan buat project baru..

Setelah itu buatlah sebuah file XML dengan cara klik kanan dan pilih new item lalu pilih xml file. Setelah itu isilah XML tersebut dg format seperti berikut:

<?xml version="1.0" encoding="utf-8" ?>
<Indonesia>
  <prov nama="Sumatera Selatan">
    <kota>Palembang</kota>
    <kota>Prabumulih</kota>
  </prov>
  <prov nama="Jawa Barat">
    <kota>Bogor</kota>
    <kota>Depok</kota>
    <kota>Bandung</kota>
  </prov>
  <prov nama="DKI Jakarta">
    <kota>Jakarta Timur</kota>
    <kota>Jakarta Barat</kota>
    <kota>Jakarta Selatan</kota>
    <kota>Jakarta Utara</kota>
  </prov>
</Indonesia>

Setelah itu rancanglah tampilan di Form1 dengan memasukkan 1 buah combobox dan 1 buah datagridview. Sebelumnya, tambahkan code berikut agar dapat menggunakan fitur-fitur LINQ untuk membaca XML file:

using System.Xml;
using System.Xml.Linq;
using System.IO;

Buat sebuah code yang mengarahkan pembacaan file pada file xml yang kita buat tadi :

XDocument data = XDocument.Load(Application.StartupPath + @"\..\..\indonesia.xml");

lalu buatlah sebuah fungsi yang berguna untuk memasukkan list nama-nama provinsi dari file XML :

        private void setCombo()
        {
            var prov = from a in data.Descendants("prov")
                       select a;
            foreach (var b in prov)
            {
                comboBox1.Items.Add(b.Attribute("nama").Value);
            }
            comboBox1.SelectedIndex = 0;
        }

Lalu buat sebuah fungsi yang memasukkan list-list kota-kota dari provinsi yang terpilih seperti berikut:

        private void setData()
        {
            dataGridView1.RowCount = 1;
            var prov = from a in data.Descendants("prov")
                       where a.Attribute("nama").Value == comboBox1.SelectedItem.ToString()
                       select a;

            var kab = from b in prov.Descendants("kota")
                      select b;

            int i = 0;
            foreach (var k in kab)
            {
                this.dataGridView1.RowCount++;
                this.dataGridView1[0, i].Value = k.Value;
                i++;
            }
        }

Lalu masukkan kedua fungsi tersebut di contructor, agar setiap form1 dibuka kedua fungsi tersebut dijalankan. Sehingga contructor nya akan menjadi seperti berikut:

 public Form1()
        {
            InitializeComponent();
            setCombo();
            setData();
        }

Lalu kita masukkan fungsi “setData()” di dalam event combobox_change agar setiap kita memilih provinsi baru, maka datagrid akan berganti isinya sesuai dengan provinsi yang terpilih. Sehingga menjadi seperti berikut:

        private void comboBox1_SelectedIndexChanged(object sender, EventArgs e)
        {
            setData();
        }

Selesai…

setelah selesai, maka tampilannya akan seperti berikut:

Selamat mencoba, semoga membantu…😀

Anda bisa men download source code lengkapnya disini.

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s

%d bloggers like this: