如何获得XDocument的独立副本?
我正在尝试创建一个新的XDocument,如下所示:
var xmlString = _documentDictionary[documentKey].ToString(SaveOptions.DisableFormatting); XDocument xml = XDocument.Parse(xmlString);
我现在有xml
,虽然它是一个独立的文档实例,因为我从原始文档中提取了字符串并从中创建了一个新的字符串。
但是当我修改xml
然后检查_documentDictionary[documentKey]
我可以看到原始文档也被修改了。
如何从我现有的系列中获取新的独立文档?
注意:
我试过这些但它不起作用:
var xmlString = _documentDictionary[documentKey].ToString(SaveOptions.DisableFormatting); var copyDoc = new XDocument(xmlString);
和
var copyDoc = new XDocument(_documentDictionary[documentKey]);
为XDocument
类定义了一个复制构造函数 :
var newDoc = new XDocument(xml);
您使用此构造函数来制作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();
name
是"Test2"
, name2
是"Test"
,这certificate对doc
所做的更改不会影响doc2
。
尝试复制构造函数,如;
var newDoc = new XDocument(xml);
来自MSDN :
您使用此构造函数来制作XDocument的深层副本 。
此构造函数遍历另一个参数中指定的文档中的所有节点和属性,并在组装新初始化的XDocument时创建所有节点的副本。