2015-04-28 54 views
0

我正在写一个工具,将一些xml节点注入到我的机器中现有的xml文件中。 但是,由于该文件大约为30MB,因此XDocument.Load(路径)将持续使用。更新C#中的大型xml文件#

例如,

<a> 
    <b> 
    <c>123</c> 
    </b> 
</a> 

是大xml文件的一部分。

我想追加一个XML节点下标记“B”像

<a> 
    <b> 
    <c>123</c> 
    <d>456</d> 
    </b> 
</a> 

该文件位于本地文件夹,我想更新现有的文件。

如何在不加载完整的情况下更新大型XML文件的最佳方法是什么?

谢谢。

回答

0

你不能随时编辑xml;那么,你可以可以,但这样做会涉及到计算编码的字节大小,扩展文件,并在插入点之后复制所有数据n字节(注意不要覆盖尚未读取的数据),并在插入点覆盖数据。

更典型的情况下,您可以使用一对一读写的XmlReader/XmlWriter对,除了在插入点处写入额外元素外。

两个选项都不重要。

你可以尝试使用代替XmlSerializerXDocument - 一个简单的对象模型(即一个POCO模型)可能更容易,更高效的负载;然而,简单地说:如果你想频繁的改变,xml不是一个好的格式。

您可能会考虑的另一个选项:XSLT(或可能是SAX);那么清理模型就成了API的工作,您只需要担心为您的更改添加模板。 XSLT并不是众所周知的工具,但它会比XmlReader更容易尝试lot(基本变换可以在几分钟内从样本中提取)。