在c#中獲取對象的XML表示的最簡單方法是什麼? 我知道你可以使用XmlSerializer,但我不知道是否有更好的方法。用c#獲取對象的xml表示的最佳方式?
我可以以某種方式使用LINQ嗎?
更新:通過最好的我的意思是我可以使用它與不可變的對象,我不需要做一個沒有準則的構造函數。
在c#中獲取對象的XML表示的最簡單方法是什麼? 我知道你可以使用XmlSerializer,但我不知道是否有更好的方法。用c#獲取對象的xml表示的最佳方式?
我可以以某種方式使用LINQ嗎?
更新:通過最好的我的意思是我可以使用它與不可變的對象,我不需要做一個沒有準則的構造函數。
希望這個例子可以幫助 - 包括使用LINQ對XML序列化和反序列化:
http://thecodeslinger.wordpress.com/2007/12/17/custom-xml-serialization-with-linq/
也有LINQ到XSD(它在孵化,不知道這對你很重要 - 它不我...):
http://www.hanselman.com/blog/LINQToEverythingLINQToXSDAddsMoreLINQiness.aspx
斯科特Hanselman的讓此評論:
LINQ to XSD使用(老化的)XSD.exe創建的.NET類與 的保真度比創建的 好得多。
下載鏈接在這裏:
這實際上取決於你的意思是「更好」。我個人喜歡使用LINQ to XML來定製對象的序列化。它使您可以完全控制序列化(允許您隨時間輕鬆更改模式,有可能保留當前代碼版本無法理解的元素或屬性),同時代碼緊湊。
我已經在幾個地方使用了這個,並且對結果感到滿意。對於非常大且複雜的類型來說,這確實是一件痛苦的事情 - 但對於合理簡單的數據結構來說,它非常棒。
我個人不太喜歡依賴像XmlSerializer和BinarySerializer這樣的東西。他們傾向於給你只是不夠完善的控制做你想做的一切,或者添加像無參數構造函數的額外要求。
你能不能舉個例子?我在使用XmlSerializer時遇到問題,因爲它需要讀/寫公共字段。但我想擁有一個不可改變的結構。 – 2010-11-02 19:59:27
@wcf guru needed:在這種情況下,您可能會編寫一個採用XElement的構造函數或一個名爲FromXElement的靜態方法,該方法會適當地創建一個實例。你還要創建一個執行序列化的'ToXElement'實例方法。不變性絕對是手卷方法的好處之一。 – 2010-11-02 20:01:17
我只能找到使用LINQ從xml創建對象的引用,而不是從對象創建XML的另一種方式。你能指點我一個參考或函數名稱開始?將不勝感激。 – 2010-11-02 20:05:42