我有一个通过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/