如何获得XDocument的独立副本?

Dav*_*Dev 13 c# xml linq-to-xml

我正在尝试创建一个新的XDocument,如下所示:

var xmlString = _documentDictionary[documentKey].ToString(SaveOptions.DisableFormatting);

XDocument xml = XDocument.Parse(xmlString);
Run Code Online (Sandbox Code Playgroud)

我现在拥有的xml是一个独立的文档实例,因为我从原始文档中提取了字符串并从中创建了一个新字符串.

但是当我修改xml然后检查时,_documentDictionary[documentKey]我可以看到原始文档也被修改了.

如何从我现有的系列中获取新的独立文档?

注意:

我试过这些但它不起作用:

var xmlString = _documentDictionary[documentKey].ToString(SaveOptions.DisableFormatting);
var copyDoc = new XDocument(xmlString);
Run Code Online (Sandbox Code Playgroud)

var copyDoc = new XDocument(_documentDictionary[documentKey]);
Run Code Online (Sandbox Code Playgroud)

Mar*_*zek 34

有一个XDocument类定义复制构造函数:

var newDoc = new XDocument(xml);
Run Code Online (Sandbox Code Playgroud)

您使用此构造函数来制作XDocument的深层副本.

此构造函数遍历另一个参数中指定的文档中的所有节点和属性,并在组装新初始化的XDocument时创建所有节点的副本.

快速测试

var doc = new XDocument(new XElement("Test"));
var doc2 = new XDocument(doc);

doc.Root.Name = "Test2";

string name = doc.Root.Name.ToString();
string name2 = doc2.Root.Name.ToString();
Run Code Online (Sandbox Code Playgroud)

name"Test2"name2"Test",证明所做的改变doc不会影响doc2.