我想要做的是將任何給定的.xml文件轉換爲VB代碼中的對象。我的程序將從網站抓取一個.xml文件,並將其更改爲一個對象。然後,我將針對從.xml文件創建的這些對象運行查詢。然後我將輸出這些查詢到數據網格。XML到VB中的對象
事情是我知道如何做到這一切與一個特定的.xml文件。我只是將引用放在.xml文件中的字段中以將其更改爲對象。但是,當涉及到更改任何.xml可能可以由用戶與許多不同的領域上傳,我迷失了方向。
有沒有辦法做到這一點?
我想要做的是將任何給定的.xml文件轉換爲VB代碼中的對象。我的程序將從網站抓取一個.xml文件,並將其更改爲一個對象。然後,我將針對從.xml文件創建的這些對象運行查詢。然後我將輸出這些查詢到數據網格。XML到VB中的對象
事情是我知道如何做到這一切與一個特定的.xml文件。我只是將引用放在.xml文件中的字段中以將其更改爲對象。但是,當涉及到更改任何.xml可能可以由用戶與許多不同的領域上傳,我迷失了方向。
有沒有辦法做到這一點?
您可以使用System.Xml
和System.Reflection.Emit
命名空間編寫XML編譯器。
但是你仍然要面對查詢結構直到運行時才知道的結構的挑戰。
更好的選擇可能是將xml加載到XmlDocument
並針對它們運行XPath或LINQ查詢。 XPath最有可能是由於對象的海森堡性質。
Dim tDoc as XmlDocument = New XmlDocument
Dim tNodes As XmlNodeList = Nothing
tDoc.Load(file_path)
tNodes = tDoc.SelectNodes("xpath query goes here")
For Each tNode As XmlNode In tNodes
' Do something with the Node
Next
xpath的任何示例都會很有用,試圖讓它走向正軌,但似乎它讓我們讀取任何xml文件。 – Xnub
編輯答案.. –
您不能將任意的XML轉換爲任意的對象,然後對它執行查詢。您可以做的是將XML作爲「XML」數據類型存儲到SQL Server數據庫中,然後對其執行XQuery查詢。 XML列甚至可以有索引來加速性能。 –
@JohnSaunders:SQL Server似乎在這裏過度殺傷,嗯?針對XmlDocument的XPath看起來就像是開始的地方 - 隨着需求/性能的需求轉向SQL Server。 –
如果XPath查詢已足夠,那麼我會使用LINQ to XML和XPath,或者可能只是使用LINQ to XML。如果需要XQuery,那麼我不認爲SQL Server Express太過分了。 –