gpt4 book ai didi

c# - 增量写入 XML XDocument 到磁盘,保持有效的 XML

转载 作者:行者123 更新时间:2023-11-30 22:36:24 39 4
gpt4 key购买 nike

我正在将一些日志事件转储到一个 XML 文件中,每 5 分钟我开始一个新文件。我一直在使用我非常喜欢的 XDocument 和 XElement,

 _xDocument = XDocument.Parse("<LogEntires/>");
_xDocument.Root.Add(xElementLogEventList.ToArray());
_xDocument.Save(_outFileName);

我想每隔 10 秒左右用一个计时器将它保存到磁盘,这样最近的事件不仅在内存中,而且人们可以在必要时检查该文件。但是 XDocument 只有写入整个文档的 Save() 和 WriteTo() 方法。并且猜测如果没有 标记,它无论如何都将是无效的 Xml。

我的下一个想法是使用 XmlWriter 并时不时地刷新我的 FileStream,跟踪自己添加结束 标记……并且只有无效的 XML,直到我完全完成并关闭文件。

我真的很想在磁盘上有有效的 Xml,如果我想写一个根标签,然后五到十秒后,当我进行下一次刷新时,只需备份并删除根标签,追加下一个一百元素并写入和刷新流。 xmlWriter 仅向前,所以我不确定执行此操作的最有效方法。

在磁盘上保存有效 xml 的最有效方法是什么,但最后要不断地流入新元素,而不是每次都重写整个文档?我担心的是我遗漏了一些明显的东西,比如 xDocument.AppendUpdatesToFile(_outfile) 或类似的东西......

如果不是,您将如何有效地找到并删除最终的根标签并以流方式附加新元素?

最佳答案

XML 对磁盘上的这种更新不友好。

如果您必须坚持使用 XML,请考虑使用 XML 片段的集合(基本上省略初始的 openeing 标记)。

关于c# - 增量写入 XML XDocument 到磁盘,保持有效的 XML,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7033721/

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