2010-03-24 52 views
2

使用DataContracts可以從IExtensibleDataObject派生出來,以允許往返運行而不會丟失XML文件中的任何未知附加數據。XmlSerializer等價於IExtensibleDataObject

我無法使用DataContract,因爲我需要控制輸出XML的格式。但是我還需要能夠在舊版本的應用程序中讀取未來版本的XML文件,而不會丟失XML文件中的任何數據。

例如

XML V1:

<Person> 
    <Name>Fred</Name> 
</Person> 

XML V2:

<Person> 
    <Name>Fred</Name> 
    <Age>42</Age> 
</Person> 

如果從V1我的應用程序的讀取XML文件V2,反序列化和序列化一次它把它變成一個XML文件V1。即「年齡」字段被刪除。

有沒有類似於IExtensibleDataObject,我可以使用XmlSerializer避免Age字段消失?

回答

4
+0

謝謝,正是我想要的。 我爲每個可序列化類添加了以下屬性: [XmlAnyElement] public XmlElement Anything; – demoncodemonkey 2010-03-25 13:51:59

+0

哎呀,應該是:[XmlAnyElement] public XmlElement [] Anything; – demoncodemonkey 2010-03-25 14:27:16