使用 XML 序列化程序和文本编写器将节点追加到 XML 根节点



有没有办法使用 XML 序列化程序将数据追加到现有的 XML 文档中。 我目前是这样做的

string filePath = "Data.xml";
var serializer = new XmlSerializer(typeof(Event));
extWriter writer = new StreamWriter(filePath, true);
serializer.Serialize(writer, event);

通过这种方式添加像根节点而不是子节点一样的元素......我也使用 LINQ 到 XML,这种方式工作得很好,但这种方式似乎是硬编码的。 有没有办法使用这种方法来实现它。

不,如果不加载文件,就无法操作文件。序列化程序始终处理整个文件。

因此,进行修改的正确方法是将文件加载到内存中,对其进行修改,然后再次保存。

对于直接匿名的 Xml-Node-Level 操作,您应该使用 XmlDocument.Load,而不是 XmlSerializer。XmlSerializer 首先将 XML 转换为自定义类。如果要添加自定义对象,这可能更简单,如果要添加 xml 节点,则最好使用 XmlDocument。

如果您现在的数据位于文件的末尾

您可以通过以下方式打开文件 作为文本 寻求到底

删除最后一行

写入数据

并再次添加最后一行

仅建议在写入大型统一文件的情况下

执行此操作

不能使用XmlSerializer 追加数据,如果要将节点添加到 XML 文件的中间,最好使用 XDocument。它可能看起来像它的"硬编码",但这是实现这一目标的方法。正如@Holger所说,XmlSerializer 首先将 XML 转换为您的自定义类。如果需要将节点添加到已存在的 XML 文件中,则最好使用 XmlDocument。

最新更新