gpt4 book ai didi

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

转载 作者:数据小太阳 更新时间:2023-10-29 02:45:47 25 4
gpt4 key购买 nike

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

最佳答案

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

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

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

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

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

关于c# - 我们可以使用 xmlserializer 更新现有的 xml 文件吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14473431/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com