2011-04-19 19 views
1

我有不同的XML文件,我需要閱讀。我想知道是否應該將文件反序列化到自定義對象中,或者只需使用XDocument對象和Linq-to-XML讀取數據。XML序列化或從XML對象讀取?

這些文件的大小範圍從1-2kb到3mb +,不同的對象的複雜程度也不一樣(有的有屬性,有的有孩子,有的都有,有的沒有)。

我認爲與使用Linq到XML的對象一起工作會更容易,但創建這些對象需要一些時間。是否有任何關於何時反序列化的規則或建議,而不是Linq?

感謝您的幫助!

回答

2

這實際上取決於你在處理數據。如果您沒有使用XML文檔提供的所有信息,那麼基於LINQ的方法可能是最簡單的。考慮採用一個RSS提要,並且只記錄文章日期,而不是別的。在這種情況下,使用反序列化技術並不能爲你做任何事情。

如果您正在使用XML文檔中幾乎每一個數據的最後一位,並且其結構反映了您的對象模型的結構,那麼肯定會反序列化它。這是我一直爲設置文件甚至簡單文件格式所做的事情。

在你的情況下,它聽起來像它已經存在,並且是由一些外部源創建的,並且你的代碼中沒有數據的對象表示,所以我建議使用基於LINQ的方法。此外,您還提到了文件中的很多變體,因此LINQ的靈活性將再次派上用場。儘管如此,根據你的描述,這是一個瘋狂的猜測。

+0

我認爲你的觀點是正確的,尤其是第一段。謝謝! – 2011-04-19 19:36:37

1

您可以使用xsd.exe工具從你給出一個XML文件,它可能產生這些類:

C:\work>xsd test.xml 
C:\work>xsd /classes test.xsd 

沒有真正的經驗法則。我個人更喜歡使用強類型對象,除非文件大小變大,在這種情況下,我切換到XmlReader。