Halo ini adalah posting kesebelas saya tentang fitur dari VB9
tentang XML Literal. Ini adalah fitur dari VB9 yang “cool”, pada VB9
XML menjadi “first class citizen” yang berarti anda dapat menuliskan
XML secara Literal.
anda dapat melihat posting saya sebelumnya:
- Implicitly typed local vaiable
- Object initializer
- Anonymous types
- Nullable types
- If Ternary operator
- Partial Method
- Extension Method
- Relaxed Delegates
- Lambda Expression
- LINQ Query
Pada jaman dahulu kala (VB8) untuk membuat file XML anda harus menggunakan System.Xml untuk DOM manipulation, contoh kodenya:
1: Imports System.IO
2: Imports System.Xml
3: Module Module1
4: Sub Main()
5: Using fs As New FileStream("produksample.xml", FileMode.Create)
6: Using wt As XmlWriter = XmlWriter.Create(fs)
7: wt.WriteStartDocument()
8: wt.WriteStartElement("Products")
9: wt.WriteStartElement("Product")
10: wt.WriteAttributeString("Id", "KB001")
11: wt.WriteElementString("Name", "Laptop Acer")
12: wt.WriteElementString("Price", "7000000")
13: wt.WriteEndElement()
14: wt.Flush()
15: End Using
16: End Using
17: End Sub
18: End Module
kode diatas akan menghasilkan file “produksample.xml” sebagai berikut:
1: <?xml version="1.0" encoding="utf-8"?>
2: <Products>
3: <Product Id="KB001">
4: <Name>Laptop Acer</Name>
5: <Price>7000000</Price>
6: </Product>
7: </Products>
LINQ to XML
Pada VB9 (.NET 3.5) anda dapat menuliskannya dengan cara yang baru. VB9 mendukung XElement
class yang terdapat pada namespace System.Xml.Linq, dengan menggunakan
cara penulisan ini code untuk pembuatan dokumen XML tampak menjadi
lebih “clean”. Class yang ada pada System.Xml.Linq adalah
Class | Deskripsi |
XAttribute | Merepresentasikan attribut yang dibuat |
XDocument | Merepresentasikan Complete XML Tree |
XElement | Merepresentasikan XML Element, dan sebagai dasar untuk mengkonstruksi XML Tree |
XName | Merepresentasikan attribut dan element names |
XNode | Merepresentasikan base class dari XML Node |
Untuk membuat dokumen xml seperti contoh sebelumnya dengan menggunakan XElement anda dapat menuliskan kode berikut:
1: Imports System.Xml.Linq
2: Module ContohXElement
3: Sub Main()
4: Dim xmlProd = New XElement("Products", _
5: New XElement("Product", _
6: New XAttribute("Id", "KB001"), _
7: New XElement("Name", "Laptop Acer"), _
8: New XElement("Price", "7000000")))
9: xmlProd.Save("xelementProd.xml")
10: End Sub
11: End Module
XML Literal
VB9 juga menawarkan cara yang lebih simple dan clean selain
menggunakan XElement yaitu XML Literal, saat ini XML Literal hanya
disupport oleh VB9, C# 3.0 belum menssuport fitur ini (C# 4.0? Maybe
^_^). dengan XML Literal anda dapat menuliskan kode berikut:
1: Imports System.Xml.Linq
2: Module ContohXElement
3: Sub Main()
4: Dim xmlProd = <Products>
5: <Product Id="KB001">
6: <Name>Laptop Acer</Name>
7: <Price>7000000</Price>
8: </Product>
9: </Products>
10: xmlProd.Save("literalprod.xml")
11: End Sub
12: End Module
Anda juga dapat mengambil nilai dari attribute atau elemen dalam dokumen tersebut dengan iterasi
1: Dim xmlProd = <Products>
2: <Product Id="KB001">
3: <Name>Laptop Acer</Name>
4: <Price>7000000</Price>
5: </Product>
6: <Product Id="KB002">
7: <Name>Laptop Toshiba</Name>
8: <Price>9000000</Price>
9: </Product>
10: </Products>
11: For Each produk In xmlProd.<Product>
12: Console.WriteLine("Id {0}, Nama {1} dan harganya Rp.{2}", _
13: produk.@Id, _
14: produk.<Name>.Value, _
15: produk.<Price>.Value)
16: Next
Hasilnya:
Mudah ya? ^_^ jika kita perhatikan ketika anda melakukan iterasi
dokumen xml diatas, VS 2008 sudah cukup memberikan intellisense
namun intellisense tersebut tidak dapat menampilkan keterangan nama
elemen atau attribut yang ada pada dokumen XML yang anda buat, karena
IDE tidak memiliki informasi tentang XML Schema anda, untuk
menyelesaikan masalah ini anda dapat mengimports xml shema dari
dokumen. Caranya tambahkan XML Schema, cara yang paling mudah adalah
dengan menggunakan fitur pada VS 2008.
Tambahkan file xml yang sudah anda buat sebelumnya kedalam project,
kemudian buka dengan VS, pilih “Create Schema”. Copykan hasil schema
yang digenerate kedalam clipboard.
Tambahkan file XML Schema pada project, dan beri nama “ProdShema.xsd”.
Kemudian copykan hasil schema yang digenerate pada langkah
sebelumnya kedalam file “ProdShema.xsd”, jangan lupa untuk mengisi
atribut “targetNamespace”
Setelah itu kembali ke kode, dan anda dapat mengimports schema yang sudah anda buat.
Dengan begitu ketika anda mengetikan kode maka bantuan intellisense
akan lebih jelas karena dapat mengenali schema dari dokumen anda
wow programming xml dokumen jadi asik klo ada intellisense gini ^_^
Embedded Expression
Anda juga dapat menambahkan embedded expression dalam XML Literal,
jika anda pernah menggunakan ASP.NET pasti familiar dengan cara
penulisan embedded expression menggunakan keyword <%= %>. Contoh
penggunaannya.
1: Imports System.Xml.Linq
2: Module EmbeddedExpression
3: Sub Main()
4: Dim mahasiswa() = {New With {.Nim = "23082321", .Nama = "Erick", .Ipk = 3.5}, _
5: New With {.Nim = "23082322", .Nama = "Bejo", .Ipk = 3.2}, _
6: New With {.Nim = "23082323", .Nama = "Anton", .Ipk = 3.3}}
7: Dim xmlStudent = <Students>
8: <%= From mhs In mahasiswa _
9: Select _
10: <Student Nim=<%= mhs.Nim %>>
11: <Nama><%= mhs.Nama %></Nama>
12: <Ipk><%= mhs.Ipk %></Ipk>
13: </Student> _
14: %>
15: </Students>
16: xmlStudent.Save("students.xml")
17: Console.WriteLine(xmlStudent.ToString())
18: End Sub
19: End Module
jika dijalankan programnya akan menampilkan
Pada kode diatas kita menggenerate dokumen xml menggunakan nilai
yang diambil dari anonymous types yang sudah kita buat sebelumnya, anda
juga dapat menggenerate dokumen XML dengan data yang anda ambil dari
database, dll. Embedded Expression juga dapat digunakan untuk
menggenerate “VB View” secara dinamis pada ASP.NET MVC.
Selamat mencoba XML Literal dari VB9 ^_^
One thought on “Fitur VB9 (LINQ to XML dan XML Literal)”