我正在编写一个工具,将一些xml节点注入我机器中的现有xml文件。 但是,由于文件大约为30MB,因此XDocument.Load(路径)将永远占用。
例如,
<a>
<b>
<c>123</c>
</b>
</a>
是大型xml文件的一部分。
我想在标签“b”下添加一个xml节点,如
<a>
<b>
<c>123</c>
<d>456</d>
</b>
</a>
该文件位于本地文件夹中,我想更新现有文件。
在没有完全加载的情况下更新大型xml文件的最佳方法是什么?
感谢。
答案 0 :(得分:0)
您无法轻松编辑xml;好吧,你可以,但这样做会涉及计算编码的字节大小,扩展文件,并将插入点后的所有数据复制n个字节(小心不要覆盖你没有的数据&# 39; t read yet),并在插入点覆盖数据。
更典型的情况是,您可以使用XmlReader
/ XmlWriter
对,逐个元素地读取和写入,但在插入点处除外,您可以在其中编写额外元素。
这两种选择都不重要。
您可以使用XmlSerializer
代替XDocument
尝试 - 更简单的对象模型(即POCO模型)可能更容易,更有效地加载;但是,简单地说:如果你想频繁改变,xml并不是一个好的格式。
您可能考虑的另一个选项:XSLT(或可能是SAX);然后扫描模型成为API的工作,您只需要担心为您的更改添加模板。 XSLT并不是每个人都知道的工具,但它比<{1}}更容易尝试 lot (基本变换可以在几分钟内从样本中组合在一起)。
答案 1 :(得分:0)
请看这个链接:http:// stackoverflow.com/questions/4255668/how-to-update-an-xml-file-without-loading-the-entire-file-in-memory
希望它有所帮助。