我们可以使用 xmlserializer 更新现有的 xml 文件吗?

本文关键字:xml 文件 可以使 xmlserializer 更新 我们 | 更新日期: 2023-09-27 17:55:27

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

我们可以使用 xmlserializer 更新现有的 xml 文件吗?

更改序列化数据违背序列化的概念 - 因此XmlSerializer不支持此功能。

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

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

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

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