繁体   English   中英

使用 XML Serializer 和 TextWriter 将节点附加到 XML 根节点

[英]Append node to XML root node using XML Serializer And TextWriter

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

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

这种方式将元素添加为根节点而不是子节点......我也使用 LINQ to XML 这种方式工作正常,但这种方式似乎是硬编码的。 有什么办法可以使用这种方法实现它。

不,没有办法在不加载文件的情况下操作文件。 序列化程序始终处理整个文件。

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

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

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

你可以打开文件 as text seek 到最后

删除最后一行

写数据

并再次添加最后一行

仅在写入大型统一文件时才建议这样做

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM