保存XDocument而不将其存储在内存中

时间:2012-10-16 10:41:16

标签: c# xml linq-to-xml

我有一个处理XML个文件的类。它有效,但问题在于,RAM正在处理所有内容。我需要做一些事情(比如使用XmlWriter类)来保存HDD,同时创建一个新的XML文件(数据非常大,这就是原因)。< / p>

如何以最好的方式做到这一点?我希望没有必要将XDocument更改为XmlDocument:/

例如 - 我在下面有XML结构,我想添加一个节点,将其保存到文件中,处理元素,然后创建一个新节点,保存它。 ..等等。

<root>
   <element no='1' />
   <element no='2' />
   <element no='3' />
   <element no='4' />
</root>

3 个答案:

答案 0 :(得分:2)

我自己没有这样做,但this article应该有所帮助,是的,你可以继续使用XDocument。

来自文章:

  

第二个改进是LINQ to XML能够将文档方法与XmlReader方法相结合。使用静态方法XNode.ReadFrom,它接受XmlReader并返回读者当前位置的XNode对象,我们可以逐个创建XNode元素,并根据需要处理它们。您仍然没有将整个文档加载到内存中,但您可以轻松使用文档。

在文章中,作者正在讨论文档中的阅读,而您正在谈论撰写。不过,我认为这里的关键是 XNode class ,它还有一个 WriteTo 方法(huzzah!)。

答案 1 :(得分:0)

您可以通过XmlWriter保存XDocument:

using (var xw = XmlWriter.Create(...)) 
{
    var xDoc = new XDocument(...);
    xDoc.Save(xw);
}

答案 2 :(得分:-1)

您可以使用保存方法,请参阅msdn