Skip to main content
 首页 » 编程设计

.net之如何对 LINQ to XML 中的元素进行深层复制

2024年02月27日9hnrainll

我想要制作 LINQ to XML XElement 的深拷贝。我想这样做的原因是文档中有一些节点我想创建修改后的副本(在同一文档中)。我没有找到执行此操作的方法。

我可以将元素转换为 XML 字符串,然后重新解析它,但我想知道是否有更好的方法。

请您参考如下方法:

无需重新解析。 XElement 的构造函数之一采用另一个 XElement 并对其进行深层复制:

XElement original = new XElement("original"); 
XElement deepCopy = new XElement(original); 

以下是几个要演示的单元测试:

[TestMethod] 
public void XElementShallowCopyShouldOnlyCopyReference() 
{ 
    XElement original = new XElement("original"); 
    XElement shallowCopy = original; 
    shallowCopy.Name = "copy"; 
    Assert.AreEqual("copy", original.Name); 
} 
 
[TestMethod] 
public void ShouldGetXElementDeepCopyUsingConstructorArgument() 
{ 
    XElement original = new XElement("original"); 
    XElement deepCopy = new XElement(original); 
    deepCopy.Name = "copy"; 
    Assert.AreEqual("original", original.Name); 
    Assert.AreEqual("copy", deepCopy.Name); 
}