XML dalam VB.NET

XML telah menjadi bagian dari programming saat ini ketika pemrograman mulai bergerak menuju ke arah web development. XML merupakan salah satu cara terbaik yang paling mudah untuk menyimpan dan mentransfer data. Microsoft .NET Framework menggunakan XML untuk menyimpan dan mengirim data antar aplikasi dan sistem remote seperti local, intranet atau internet.



Namespace dan Class XML
Library Microsoft .NET Runtime memiliki banyak Class untuk bekerja dengan dokumen XML. Class-class ini disimpan dalam lima macam namespace – System.Xml, System.Xml.Schema, System.Xml.Serialization, System.Xml.XPath, dan System.Xml.Xsl. Tujuan dari tiap namespace ini berbeda-beda. Semua Class tersimpan dalam suatu assembly System.Xml.dll.
Sebelum kita mulai menggunakan Class XML dalam program kita, kita perlu menambahkan referensi dari assembly System.Xml.dll dan menggunakan namespace dalam program kita dengan menggunakan katakunci Imports.


Namespace pertama adalah System.Xml. Namespace ini memiliki class-class utama. Namespace ini memiliki banyak Class untuk membaca dan menulis dokumen XML. Dalam artikel ini, kita hanya akan focus pada Class reader dan writer. Class reader dan writer ini digunakan untuk membaca dan menulis dokumen XML. Class-class ini antara lain: XmlReader, XmlTextReader, XmlValidatingReader, XmlNodeReader, XmlWriter dan XmlTextWriter. Bisa diperhatikan, ada dua Class reader dan dua Class writer.


Class XmlReader merupakan Class abstract dasar dan memiliki method dan properti untuk membaca dokumen XML. Method read akan membaca suatu node dalam stream. Disamping membaca fungsi, Class ini juga mempunyai method untuk navigasi ke dalam node dalam sebuah dokumen XML. Beberapa method ini antara lain: MoveToAttribute, MoveToFirstAttribute, MoveToContent, MoveToFirstContent, MoveToElement dan MoveToNextAttribute. Method ReadString, ReadInnerXml, ReadOuterXml, dan ReadStartElement merupakan method read yang lain. Class ini juga memiliki suatu method Skip untuk melewati node saat ini dan menuju ke node berikutnya.


Class XmlTextReader, XmlNodeReader dan XmlValidatingReader diturunkan dari Class XmlReader.
Class XmlWrite memiliki fungsi untuk menulis data ke dalam dokumen XML.  Class ini menyediakan banyak method write untuk menulis ke dalam dokumen XML. Class ini merupakan Class dasar untuk Class XmlTextWriter.
Class XmlNode mempunyai peranan yang penting. Walaupun Class ini mewakili suatu node dari XML tetapi node tersebut bisa merupakan node root dari suatu dokumen XML dan juga bisa mewakili keseluruhan isi file. Class ini merupakan Class abstract dasar untuk Class-class lain yang digunakan seperti menambah, menghapus, dan mengganti node, navigasi ke dalam dokumen.  XmlNode juga memiliki properti untuk memperoleh parent atau child, name, child akhir, tipe node dan masih banyak lagi. Tiga Class utama yang diturunkan dari XmlNode adalah XmlDocument, XmlDataDocument dan XmlDocumentFragment. Class XmlDocument mewakili dokumen XML dan menyediakan method dan properti untuk membuka dan menyimpan dokumen. XmlDocument juga memiliki kegunaan untuk menambah item dalam XML seperti atribut, komentar, tempat, elemen dan node baru. Method Load dan method LoadXml bisa digunakan untuk meload dokumen XML dan method Save digunakan untuk menyimpan dokumen. Class XmlDocumentFragment mewakili fragmen dokumen, yang bisa digunakan untuk menambah dokumen. Class XmlDataDocument menyediakan method dan properti untuk bekerja dengan objek dataset ADO.NET.
Diluar dari bahasan di atas, namespace System.Xml masih memiliki banyak Class lain seperti: XmlConvert, XmlLinkedNode, dan XmlNodeList.
Namespace berikutnya dalam Xml adalah namespace System.Xml.Schema. Bekerja dengan skema Xml seperti XmlSchema, XmlSchemaAll, XmlSchemaXPath, XmlSchemaType.


Namespace System.Xml.XPath memiliki Class XPath. Namespace ini memiliki beberapa Class seperti: XPathDocument, XPathExression, XPathNavigator, dan XPathNodeIterator.


Membaca dokumen XML
Dalam contoh ini, kita menggunakan buku.xml untuk membaca dan menampilkan data menggunakan XmlTextReader.
Class XmlTextReader, XmlNodeReader dan XmlValidatingReader diturunkan dari Class XmlReader. Selain method dan properti XmlReader, class-class ini juga memiliki member untuk membaca teks, node, dan schema.
Kita menggunakan Class XmlTextReader untuk membaca suatu file XML. Kita membaca suatu file dengan memasukkan nama file tersebut sebaga parameter dalam konstruktor.


Dim textReader As XmlTextReader = New XmlTextReader("buku.xml")

Sesudah membuat instance dari XmlTextReader, kita menggunakan method Read untuk memulai membaca dokumen. Setelah method Read digunakan, kita bisa membaca semua informasi dan data yang tersimpan dalam dokumen. XmlReader mempunyai properti seperti Name, BaseURI, Depth, LineNumber dan lain-lain.
List1: Membaca properti dokumen XML.

' Import namespace System.Xml
Imports System.Xml
Module Module1
Sub Main()
' membuat suatu isntance daru XmlTextReader memanggil
‘method Read untuk membaca file.
Dim textReader As XmlTextReader = New XmlTextReader("C:\\buku.xml")
textReader.Read()
' Jika node memiliki nilai
If textReader.HasValue Then
' Menuju elemen pertama
textReader.MoveToElement()
Console.WriteLine("XmlTextReader Test")
Console.WriteLine("===================")
' Membaca properti elemen ini dan menampilkannya
Console.WriteLine("Nama:" + textReader.Name)
Console.WriteLine("Base URI:" + textReader.BaseURI)
Console.WriteLine("Nama Local:" + textReader.LocalName)
Console.WriteLine("Jumlah Atribut:" + textReader.AttributeCount.ToString())
Console.WriteLine("Kedalaman:" + textReader.Depth.ToString())
Console.WriteLine("Baris:" + textReader.LineNumber.ToString())
Console.WriteLine("Tipe Node:" + textReader.NodeType.ToString())
Console.WriteLine("Jumlah atribut:" + textReader.Value.ToString())
End If
End Sub
End Module

Properti NodeType dari XmlTextReader sangat penting ketika kita ingin mengetahui tipe isi dari suatu dokumen.
List2: menerima informasi NodeType

‘Import namespace System.Xml
Imports System.Xml
Module Module1
Sub Main()
Dim ws, dc, cc, ac, et, el, xd As Integer
' Membaca dokumen
Dim textReader As XmlTextReader = New XmlTextReader("C:\\buku.xml")
' Baca sampai akhir file
While textReader.Read()
Dim nType As XmlNodeType = textReader.NodeType
' jika tipe node deklarasi
If nType = XmlNodeType.XmlDeclaration Then
Console.WriteLine("Deklarasi:" + textReader.Name.ToString())
xd = xd + 1
End If
' jika tipe node komentar
If nType = XmlNodeType.Comment Then
Console.WriteLine("Komentar:" + textReader.Name.ToString())
cc = cc + 1
End If
' jika tipe node atribut
If nType = XmlNodeType.Attribute Then
Console.WriteLine("Atribut:" + textReader.Name.ToString())
ac = ac + 1
End If
' jika tipe node elemen
If nType = XmlNodeType.Element Then
Console.WriteLine("Elemen:" + textReader.Name.ToString())
el = el + 1
End If
' jika tipe node entity
If nType = XmlNodeType.Entity Then
Console.WriteLine("Entiti:" + textReader.Name.ToString())
et = et + 1
End If
' jika tipe node dokumen
If nType = XmlNodeType.DocumentType Then
Console.WriteLine("Dokumen:" + textReader.Name.ToString())
dc = dc + 1
End If
' jika tipe node spasi kosong
If nType = XmlNodeType.Whitespace Then
Console.WriteLine("SpasiKosong:" + textReader.Name.ToString())
ws = ws + 1
End If
End While
Console.WriteLine("Total komentar:" + cc.ToString())
Console.WriteLine("Total Atribut:" + ac.ToString())
Console.WriteLine("Total Elemen:" + el.ToString())
Console.WriteLine("Total Entiti:" + et.ToString())
Console.WriteLine("Total Deklarasi:" + xd.ToString())
Console.WriteLine("Total TipeDokumen:" + dc.ToString())
Console.WriteLine("Total SpasiKosong:" + ws.ToString())
End Sub
End Module


Menulis Dokumen XML
Class XmlWriter memiliki kegunaan untuk menulis ke dalam dokumen XML. XmlWriter merupakan Class abstrak Dasar, digunakan melalui Class XmlTextWriter dan XmlNodeWriter.  Memiliki method dan properti untuk menulis ke dalam dokumen XML. Class ini memiliki banyak method write untuk menulis tipe dari setiap item dalam dokumen XML. Contohnya, WriteNode, WriteString, WriteAttributes, WriteStartElement, dan WriteEndElement. Sebagai contoh, untuk menulis suatu elemen, kita perlu memanggil WriteStartElement lalu menulis string dan diikuti dengan WriteEndElement.
Disamping banyaknya method, Class ini memiliki tiga properti. WriteState, XmlLang, dan XmlSpace. WriteState menerima dan mengatur status dari Class XmlWriter.
Method WriteStartDocument dan method WriteEndDocument akan membuka dan menutup dokumen yang akan ditulis. Kita harus membuka suatu dokumen sebelum memulai menulis ke dalam dokumen tersebut. Method WriteComment akan menulis komentar ke dalam suatu dokumen.  Method WriteString akan menulis suatu string ke dalam dokumen. Dengan bantuan method WriteString, WriteStartElement dan WriteEndElement kita bisa menulis suatu elemen ke dalam dokumen. Sedangkan, WriteStartAttribute dan WriteEndAttribute akan menulis atribut ke dalam dokumen.
WriteNode lebih dari sekedar method write, yakan akan menulis suatu XmlReader ke dalam suatu dokumen sebagai node dari dokumen tersebut. Contoh, kita bisa menggunakan method WriteProcessingInstruction dan WriteDocType untuk menulis suatu item ProcessingInstruction dan DocType ke dalam dokumen.


‘Menulis node ProcessingInstruction
Dim PI As String = "type='text/xsl' href='buku.xsl'"
textWriter.WriteProcessingInstruction("xml-stylesheet", PI)
'Menulis node DocumentType
textWriter.WriteDocType("buku", Nothing, Nothing, "<!ENTITY h'softcover'>")


List3: Menulis suatu dokumen XML menggunakan XmlTextWriter

' Import namespace System.Xml
Imports System.Xml
Module Module1
Sub Main()
' membuat file baru dalam direktori C:\\
Dim textWriter As XmlTextWriter = New
XmlTextWriter("C:\\myXmFile.xml", Nothing)
' Membuka dokumen
textWriter.WriteStartDocument()
' menulis komentar
textWriter.WriteComment("Contoh XmlTextWriter")
textWriter.WriteComment("myXmlFile.xml dalam root dir")
' menulis elemen pertama
textWriter.WriteStartElement("Pelajar")
textWriter.WriteStartElement("r", "RECORD", "urn:record")
' menulis elemen berikutnya
textWriter.WriteStartElement("Nama", "")
textWriter.WriteString("Student")
textWriter.WriteEndElement()
' menulis elemen lain
textWriter.WriteStartElement("Alamat", "")
textWriter.WriteString("Koloni")
textWriter.WriteEndElement()
' WriteChars
textWriter.WriteStartElement("Char")
Dim ch() As Char = {"b", "l", "last"}
textWriter.WriteChars(ch, 0, ch.Length)
textWriter.WriteEndElement()
' Akhir dokumen.
textWriter.WriteEndDocument()
' Menutup writer
textWriter.Close()
End Sub
End Module;

Menggunakan XmlDocument
Class XmlDocument mewakili suatu dokumen XML.
Method Load dan LoadXml merupakan method yang berguna dalam Class ini. Method Load akan membuka data XML dari suatu string, stream, TextReader atau XmlReader. Method LoadXml akan membuka dokumen XML dari suatu string yang spesifik. Method lain yang berguna dalam Class ini adalah Save. Dengan menggunakan method Save kita bisa menulis data XML ke dalam suatu string, stream, TextWriter atau XmlWriter.

'Membuat XmlDocument.
Dim doc As New XmlDocument
doc.LoadXml(("<Pelajar type='regular' Sesi='B'><Nama>Joko</Nama>
</Pelajar>"))
'Menyimpan dokumen ke dalam file.
doc.Save("C:\\std.xml") 

Kita juga bisa menggunakan method Save untuk menampilkan isinya ke dalam konsol jika kita memasukkan Console.Out sebagai parameter.

doc.Save(Console.Out);


Contoh lain:

Dim doc As New XmlDocument
'Load dokumen dengan node buku terakhir.
Dim reader As New XmlTextReader("c:\\buku.xml")
reader.Read()
doc.Load(reader)
doc.Save(Console.Out)

XmlDataDocument dan DataSet
XmlDataDocument digunakan untuk menyediakan sinkronisasi antara Dataset dan dokumen XML. Kita bisa menggunakan XmlDataDocument untuk membaca suatu dokumen XML dan menghasilkan suatu Dataset atau membaca data dari suatau Dataset dan menghasilkan suatu file XML.






Related Posts by Categories



Widget by Hoctro

Enter your email address:

Delivered by FeedBurner

Followers



Source Code

Tips