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

XDocument doc;

doc = XDocument.Load(reader);


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

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

最佳答案

你应该能够做

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


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

关于c# - 是否可以重新加载XDocument并保留对其的所有现有引用?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/13979043/

10-16 01:00