只是想知道我们是否可以使用C#中的xml序列化/反序列化来更新已构建的xml文件? 此外,如果文件最初只有根节点,我们可以用子节点更新它吗? (不管方法如何?)
答案 0 :(得分:0)
更改序列化数据违反了序列化的概念 - 因此XmlSerializer
不支持此操作。
由于ryadavilli建议您可以使用XmlDocument或XDocument手动添加/修改/删除节点。当您序列化早期版本的对象数据并且希望将这些文档更新为新版本时,这非常有用。
但是,如果您当前的对象模型与序列化数据没有区别,您是否考虑过反序列化,更改记忆中的对象并将其重新序列化?
我能想象的唯一其他选择是实施IXmlSerializable
,同时打开XmlReader
和XmlWriter
,复制每个节点,直到到达“插入点”。然后使用XmlSerializer
写入已更改的数据,之后继续复制。绝对不是一个开箱即用的解决方案。
至于评论中的问题 - XmlSerialization用于序列化和反序列化对象,其中XDocument
(xml-linq)允许您手动编写xml文档。虽然结果可能相同,但它们基本上做了不同的事情,所以哪一个更好取决于你想要达到的目标。