LINQ To XML With VB 9.0 (Modify XML Data Easily - Relax For a While ;) )

Posted at : Nov/24/2008
1896 Views

LINQ To XML menyediakan suatu cara baru untuk memodifikasi data yang disimpan didalam file xml. Hal tersebut dipermudah lagi dengan adanya fitur XML Literal di VB 9.0 dalam hal penambahan elemen atau atribut baru. LINQ membantu dalam hal filtering data xml yang akan di modifikasi. Pada artikel ini saya akan memberikan contoh bagaimana caranya menambahkan elemen dan atribut, menghapus elemen, edit elemen dan edit atribut value.

Misalkan saya mempunyai sebuah file xml dengan nama Book.xml dengan data seperti dibawah ini :

<?xml version="1.0" encoding="utf-8" ?>
<
Books>
<
Book CatID="1">
<
Title>Programming Visual Basic 9.0</Title>
<
Publisher>Apress</Publisher>
</
Book>
<
Book CatID="2">
<
Title>SQL Server 2008 Administration</Title>
<
Publisher>MS Press</Publisher>
</
Book>
<
Book CatID="3">
<
Title>Windows Server 2008</Title>
<
Publisher>MS Press</Publisher>
</
Book>
</
Books>

Bagaimana caranya kalau kita ingin menambahkan data baru? Ada beberapa cara yang dapat dilakukan :

Menambahkan Elemen Baru

1. Add method

Untuk menambahkan elemen baru pada baris yang terakhir anda bisa gunakan method Add. Pertama kita harus dapatkan terlebih dahulu object reference ke elemen Books. Gunakan method First untuk mendapatkannya. Method ini akan mengembalikan first elemen yang dicari.

Option Strict On

Module
LinqToXML

Sub Main()

Dim xmlBook = XDocument.Load("../../Book.xml")

xmlBook.<Books>.First.Add( _
<Book CatID="1">
<
Title>Programming C# 3.0</Title>
<
Publisher>Sybex</Publisher>
</
Book>)

'xmlBook.Save("../../Book.xml")
Console.WriteLine(xmlBook)
Console.ReadLine()

End Sub

End Module

Kode diatas akan menghasilkan elemen baru Book dengan CatID=1 berikut Title dan Publisher seperti yang dapat dilihat pada xml literalnya. XML Literal merupakan fitur baru yang terdapat di VB 9.0 yang sangat memudahkan kita untuk melakukan modifikasi data di file xml. Dengan XML Literal kita cukup ketikkan file xml seperti halnya kita ketik string literal. Secara otomatis data type nya di infer sebagai XElement. Berikut screen shot gambarnya :

2. AddAfterSelf method

Metoda ini digunakan untuk menambahkan elemen baru tepat dibawah elemen yang kita inginkan. Misalkan saya ingin menambahkan elemen baru setelah data Book yang memiliki CatID = 1. Berikut kode nya :

Sub Main()

Dim xmlBook = XDocument.Load("../../Book.xml")

Dim xmlData = From elem In xmlBook...<Book> _
Where elem.@CatID.ToString.Equals("1") _
Select elem

xmlData.First.AddAfterSelf( _
<Book CatID="1">
<
Title>Programming C# 3.0</Title>
<
Publisher>Sybex</Publisher>
</
Book>)

'xmlBook.Save("../../Book.xml")
Console.WriteLine(xmlBook)
Console.ReadLine()

End Sub

Kode diatas akan menambahkan elemen baru setelah elemen dengan atribut CatID = 1 :

3. AddBeforeSelf method

Metoda ini kebalikannya dengan metoda di atas. Misalkan saya ingin menambahkan elemen baru sebelum data Book dengan CatID = 1 yang mengandung title "Visual Basic" :

Sub Main()

Dim xmlBook = XDocument.Load("../../Book.xml")

Dim xmlData = From elem In xmlBook...<Book> _
Where elem.@CatID.ToString.Equals("1") _
AndAlso elem.<Title>.Value.Contains("Visual Basic") _
Select elem

xmlData.First.AddBeforeSelf( _
<Book CatID="1">
<
Title>Programming C# 3.0</Title>
<
Publisher>Sybex</Publisher>
</
Book>)

'xmlBook.Save("../../Book.xml")
Console.WriteLine(xmlBook)
Console.ReadLine()

End Sub

hasilnya :

Mudah kan ;) ...dengan LINQ To XML dan XML Literal di VB 9.0 si programmer bisa happy kalau dapat tugas buat modifikasi file xml, yang sebelumnya cukup sedikit nightmare kalau dapat tugas ini di VB.NET versi sebelumnya :D

Sekarang muncul pertanyaan lainnya : Bagaimana caranya kalau kita ingin merubah value sebuah elemen atau atribut? Berikut caranya :

Merubah Nilai Elemen dan Atribut

1. SetElementValue

Method tersebut membutuhkan input parameter nama elemen dan value baru yang akan dirubah. Untuk merujuk pada elemen yang akan dirubah, anda bisa menggunakan fungsi First atau Single (tergantung kebutuhan aplikasi) :

Sub Main()

Dim xmlBook = XDocument.Load("../../Book.xml")

Dim xmlData = From elem In xmlBook...<Book> _
Where elem.@CatID.ToString.Equals("1") _
AndAlso elem.<Title>.Value.Contains("Visual Basic") _
Select elem

xmlData.First.SetElementValue("Title", "LINQ With VB 9.0")
'atau
'xmlData.Single.SetElementValue("Title", "LINQ With VB 9.0")


'xmlBook.Save("../../Book.xml")
Console.WriteLine(xmlBook)
Console.ReadLine()

End Sub

hasilnya :

2. SetValue

Method ini berbeda dengan method di atas. Untuk method ini kita harus tentukan terlebih dahulu elemen mana yang akan kita rubah nilainya :

xmlData...<Title>.First.SetValue("LINQ With VB 9.0")
'atau
'xmlData...<Title>.Single.SetValue("LINQ With VB 9.0")

Kode diatas hanya membutuhkan satu input parameter untuk merubah nilai dari elemen Title. Hasilnya sama seperti pada gambar di atas.

3. SetAtributeValue

Method ini digunakan untuk merubah nilai dari suatu atribut. Misalkan data dengan atribut CatID = 1 ini akan dirubah nilainya menjadi 4 :

Sub Main()

Dim xmlBook = XDocument.Load("../../Book.xml")

Dim xmlData = From elem In xmlBook...<Book> _
Where elem.@CatID.ToString.Equals("1") _
Select elem

xmlData.First.SetAttributeValue("CatID", "4")
'atau
'xmlData.Single.SetAttributeValue("CatID", "4")


'xmlBook.Save("../../Book.xml")
Console.WriteLine(xmlBook)
Console.ReadLine()

End Sub

hasilnya :

Menghapus Elemen

Menghapus elemen tertentu sesuai dengan kriteria yang diinginkan?? Mudah sekali caranya teman :D ...dengan menggunakan LINQ To XML dan Remove method, anda dapat melakukannya sambil minum kopi ;)

Sub Main()

Dim xmlBook = XDocument.Load("../../Book.xml")

Dim xmlData = From elem In xmlBook...<Book> _
Where elem.@CatID.ToString.Equals("3") _
Select elem

xmlData.First.Remove()
'atau
'xmlData.Single.Remove()


'xmlBook.Save("../../Book.xml")
Console.WriteLine(xmlBook)
Console.ReadLine()

End Sub

hasilnya :

Ok...sampai disini dulu teman ;) O ya...happy coding Vb-ers :D

 


ABOUT ME

Rully Yulian MF
Rully Yulian Muhammad Firmansyah | Co-Founder & IT Trainer at Native Enterprise | Microsoft Azure Data Scientist | IBM RAG & Agentic AI | IBM Data Science & Data Analyst | Python Certified (PCEP, PCAP) | MOS, MTA, Xamarin Certified, ex MCT | ex MVP

CERTIFICATIONS

Microsoft Certified Associate
IBM RAG and Agentic AI Professional
IBM Data Science Professional IBM Data Analyst Professional
PCAP Associate Python Programmer Certified PCEP Entry Level Python Programmer Certified
Xamarin Certified
MOS 2007
MCPD MCTS
MCAD.NET

NATIVE ENTERPRISE

Native Enterprise - IT Training

FOLLOW ME

Youtube  X Twitter Facebook  Instagram  LinkedIn

RSS


NATIVE ENTERPRISE NEWS

© Copyright 2006 - 2026   Rully Yulian MF   All rights reserved.