Bayangkan jika anda mempunyai sebuah file xml yang element-elementnya memiliki kedalaman (sibling node) yang cukup nested...lalu bagaimana caranya kalau kita ingin melakukan update element tertentu pada element yang berada pada node yang paling dalam? Pake XPath? Pake XmlDocument? Jawabannya tentu tidak...ga terbayangkan kalau kita melakukannya menggunakan kedua class tersebut. Lalu pake apa? Ya...seperti yang anda sudah tahu semua, pake LINQ to XML...update nodenya pake XML Literal dong :)
Ok...misalkan saya punya sebuah file xml seperti ini :
kemudian saya ingin update / menambahkan "Answer" node pada element "AnswerList" yang terdapat pada parent element "Property" untuk "SubCategory" element dengan attribut "Name" = "" dan "Category" element dengan atribut "Name" = "Genset-A"...(mendsekripsikannya aja susah :) )...sekarang saya hanya ingin memperlihatkan potongan code nya saja langsung untuk membuktikan how powerfull Linq to XML, LambdaExpression, and XML Literal in VB 9.0...
schemaContent.Find(Function(item) item...<Category>.@Name.Equals( _
ddlAvailableCat.Text) AndAlso item...<SubCategory>.@Name.Equals( _
ddlAvailableSubCat.Text))...<Property>.Where( _
Function(name) name.<Name>.Value.Equals( _
CStr(ViewState("propselected")))).<AnswerList>(0).Add( _
From answer In listToUpdate(0).AnswerList _
Select <Answer>
<%= answer %>
</Answer>)
schemaContent(0).Save("c:/test.xml")
System.Diagnostics.Process.Start("c:/test.xml")
Variabel schemaContent merupakan Generic List(Of System.Xml.Linq.XElemant) yang diambil dari kolom yang disimpan dengan tipe data xml di database SQL Server 2005, dan hasilnya dapat anda lihat pada gambar dibawah ini :
Ok...segitu saja (Udah mumet nih)...jangan terlalu banyak ngoding ah :D ...so How Deep Can You Dive with your own code :p ?