3

只是想知道我们是否可以在 C# 中使用 xml 序列化/反序列化来更新已经构建的 xml 文件?另外,如果文件最初只有根节点,我们可以用子节点更新它吗?(不管用什么方法?)

4

1 回答 1

0

更改序列化数据违背了序列化的概念 - 所以XmlSerializer不支持这一点。

正如 ryadavilli 建议的那样,您可以使用 XmlDocument 或 XDocument 手动添加/修改/删除节点。当您已经序列化了早期版本对象的数据并且想要将这些文档更新到新版本时,这非常有用。

但是,如果您当前的对象模型与序列化数据没有什么不同,您是否考虑过反序列化、更改内存中的对象并再次将它们序列化?

我能想象的唯一其他选择是实现IXmlSerializable,打开XmlReaderXmlWriter,复制每个节点,直到到达“插入点”。然后使用XmlSerializer写入已更改的数据,然后继续复制。绝对不是开箱即用的解决方案。

至于您评论中的问题 - XmlSerialization 旨在序列化和反序列化对象,其中XDocument(xml-linq) 允许您手动编写 xml 文档。虽然结果可能相同,但它们本质上做的是不同的事情,所以哪个更好取决于你想要实现的目标。

于 2013-01-23T07:46:54.843 回答