2013-01-23 103 views
3

只是想知道,如果我們可以使用XML序列化/ deserializtion在C#中更新已建xml文件? 另外,如果文件最初只有根節點,我們可以使用子節點更新嗎? (?不管方法)我們可以使用xmlserializer更新現有的xml文件嗎?

+0

如果你有一個序列化後一個XmlDocument或的XDocument,你可以用它玩不過你想要的。請注意,隨機更改會導致稍後反序列化的問題。 – ryadavilli

+0

看到了這一點 - http://www.codeproject.com/Articles/22787/Custom-Serialization-Example? – WorldIsRound

+0

看起來很有希望。還有一個問題,我知道這是主觀的,但哪種方式更好,xmlserialzation或xml-linq,如[here](http://www.i-think22.net/archives/2009/02/27/writing-xml -with-的XElement /)? –

回答

0

更改序列化數據違背了系列化的概念 - 所以XmlSerializer不支持此。

由於ryadavilli建議你可以使用XmlDocument的或的XDocument手動添加/修改/刪除節點。當您有早期版本的對象的序列化數據並且您想要將這些文檔更新爲新版本時,這非常有用。

如果您當前的對象模型是不是從序列化的數據有所不同,不過,你有沒有考慮反序列化,改變memeory的對象,然後再返回序列化呢?

唯一的其他選擇,我可以想像正在實施IXmlSerializable,開放既是XmlReaderXmlWriter,複製的每個節點,直到到達「插入點」。然後使用XmlSerializer寫入已更改的數據,之後繼續複製。肯定不是一個開箱即用的解決方案。

至於你的評論中的問題 - XmlSerialization是爲了序列化和反序列化對象,其中XDocument(xml-linq)允許你手動編寫一個xml文檔。儘管結果可能相同,但它們實質上做了不同的事情,所以哪一個更好取決於你想達到的目標。

相關問題