2

我有一个处理XML文件的类。它可以工作,但问题是,一切都在RAM. 我需要做一些事情(比如使用XmlWriter类)以HDD在创建新XML文件时保存它(数据非常大,这就是原因)。

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

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

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

3 回答 3

2

我自己还没有这样做,但这篇文章应该会有所帮助,是的,您可以继续使用 XDocument。

来自文章:

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

在文章中,作者谈论的是从文档中读取,而您谈论的是写作。但是,我认为这里的关键是XNode 类,它也有一个WriteTo方法(huzzah!)。

于 2012-10-16T10:49:48.640 回答
0

您可以通过 XmlWriter 保存 XDocument:

using (var xw = XmlWriter.Create(...)) 
{
    var xDoc = new XDocument(...);
    xDoc.Save(xw);
}
于 2012-10-16T10:47:02.607 回答
-1

您可以只使用Save方法,请参阅msdn

于 2012-10-16T10:47:06.413 回答