Fitur VB9 (LINQ to XML dan XML Literal)

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:

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:

image

Mudah ya? ^_^ jika kita perhatikan ketika anda melakukan iterasi
dokumen xml diatas, VS 2008 sudah cukup memberikan intellisense

image

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.

image

Tambahkan file XML Schema pada project, dan beri nama “ProdShema.xsd”.

image

Kemudian copykan hasil schema yang digenerate pada langkah
sebelumnya kedalam file “ProdShema.xsd”, jangan lupa untuk mengisi
atribut “targetNamespace”

image

Setelah itu kembali ke kode, dan anda dapat mengimports schema yang sudah anda buat.

image

Dengan begitu ketika anda mengetikan kode maka bantuan intellisense
akan lebih jelas karena dapat mengenali schema dari dokumen anda

image

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

image

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)

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 )

Facebook photo

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

Connecting to %s