LINQ to XML - VB.NET

LINQ to XML - VB.NET

如果有用過DOM的方式來讀寫過XML的話,應該會覺得用 LINQ 新增的類別來建XML檔的方式很像,以下是一些簡單的LINQ操作XML範例。

 

如果要新建一個檔案的話如下方程式碼:

        Dim xEleBooks As New XElement("TPGroup")

        Dim xEleBook As New XElement("TestProgram")
        xEleBook.SetAttributeValue("TP_NAME", "DEMO")
        xEleBook.SetAttributeValue("TP_RELEASE", "True")
        xEleBooks.Add(xEleBook)

        Dim xEleBook1 As New XElement("TestProgram")
        xEleBook1.SetAttributeValue("TP_NAME", "DEMO1")
        xEleBook1.SetAttributeValue("TP_RELEASE", "False")
        xEleBooks.Add(xEleBook1)

        xDoc.Add(xEleBooks)
        xDoc.Save(".\TEST.xml")

LINQ_XML_1

 

如果要讀入剛剛的檔案然後用LINQ查詢:

 

        Dim enumXML = From ex In xEle.Elements Where ex.Attribute("TP_RELEASE").Value = "True"
        For Each x As XElement In enumXML
            MsgBox(x.Attribute("TP_NAME").Value)
        Next

 

如果要將剛剛的檔案內容修改:

        Dim enumXML = From ex In xEle.Elements Where ex.Attribute("TP_RELEASE").Value = "True"

        For Each x As XElement In enumXML
            x.Attribute("TP_NAME").SetValue("Change")
        Next

        xEle.Save(".\TEST.xml")

 

 

LINQ_XML_2

 

如果要刪除節點:

        Dim enumXML = From ex In xEle.Elements Where ex.Attribute("TP_RELEASE").Value = "True"
        For Each x As XElement In enumXML
            x.Remove()
        Next

        xEle.Save(".\TEST.xml")

 

 

另外還有一種VB的特殊寫法,可以直接在程式碼中寫類似XML的程式碼,叫做XML Literals,寫法如下:

		<TestProgram TP_NAME="DEMO" TP_RELEASE="True"/>
		<TestProgram TP_NAME="DEMO1" TP_RELEASE="False"/>
	  </TPGroup>

xml.Save(".\TEST.xml")