2010-08-20 13 views
2

我有許多(15-20)不同的XML文件需要加載到VB.Net。它們的設計與數據庫中的一樣。它們在Access中設計並批量導出到XML文件中。 每個文件都代表數據庫中的不同表格。將XML文件加載到VB.Net結構中

現在,我需要將這些信息加載到VB.Net。最初,我很樂意使用DAO並通過查詢直接訪問MDB,但這是不可能的,因爲我確保該項目可以輕鬆移植到XNA/C#(Xbox 360不能使用MDB,所以我寧願現在處理這個問題也不願意)。

因此,我現在試圖找出如何將所有這些XML文件一起纏繞在一起。我試過使用工廠來分別解析每一個。例如,如果三個XML文件包含「字符」類的數據,我會將一個Character實例傳遞給每個XML工廠,並且這些類將應用必要的數據。

我試圖通過這個雖然,因爲用冗餘代碼維護許多不同的類是一種痛苦。加上它也很難調試。所以我試圖找出一個新的解決方案。

我現在唯一能想到的就是使用System.Reflection,其中我解析了每個我正在實例化的類/結構的成員,然後使用這些成員的名稱來讀取數據XML文件的元素。

但是,這會假設每個結構/類的成員在XML文件中都有匹配的元素,反之亦然。

+1

僅僅因爲您想維護可移植性而迫使XML接口?是這樣的,關係數據庫API將比任何最終的解決方案更具可移植性...... – Tahbaza 2010-08-20 02:52:51

+0

您正在讓自己變得更加困難,無論是現在,還是想要遷移。只需訪問MDB。在C#中執行它幾乎與VB.NET完全一樣。 – David 2010-08-20 02:56:31

+1

我想保持與XNA/C#的可移植性。在部署到XBox360的項目上無法訪問或使用MDB文件。我寧願想出一個現在適用於多平臺而不僅僅是一個平臺的系統,並且在我移植它時稍後重做該程序。 – 2010-08-20 03:09:40

回答

2

Linq-to-XML是一個很好的解決方案(和even better in VB.NET與XML文字和全局命名空間的東西)。將多個XML文件作爲數據庫表處理可能有些艱難,但肯定不是不可能的。我想我會從JOIN開始(即使它在標題中有「C#」,樣本也在VB中)。

1

如果您知道XML文件的架構 - 您可以創建.NET類,將這些XML文件之一反序列化爲.NET對象的實例。

如果您有XSD文件,您也可以使用xsd.exe(隨Windows SDK下載)爲您生成.NET類定義(或者可以編寫XSD比編寫可序列化的.NET類更簡單)。