2

我通过 XDocument 的静态 Load 方法(采用 XmlReader)创建了一个 XDocument,如下所示:

XDocument doc;

doc = XDocument.Load(reader);

现在,有必要在某个时候重新加载文档(在进行更改后恢复到原始版本)。这样做的明显方法似乎是doc = XDocument.Load(reader);。但是,这将创建一个新的 XDocument,并且任何现有的对 XDocument 的引用doc仍将指向旧的(更改的)版本,尽管我们已经(重新)加载了原始版本。

有没有办法将 XmlReader(甚至 XML 的字符串或字节 [] 表示)加载到现有的 XDocument 中,覆盖内容?还是我必须手动进行所有更改(删除其元素并添加新元素)?

4

2 回答 2

3

您可以替换XDocument.

var oldDoc = new XDocument();
oldDoc.Add(new XElement("OldRoot"));
var newDoc = new XDocument();
newDoc.Add(new XElement("NewRoot"));
oldDoc.Root.ReplaceWith(newDoc.Root);
于 2012-12-20T19:27:32.960 回答
3

你应该能够做到

 doc.Root.ReplaceWith( XElement.Load(fileName));

如果您想保留处理指令,您可能需要先加载到临时 XDocument。

于 2012-12-20T19:28:33.927 回答