Clone

Node.Clone method

创建节点的副本。

public Node Clone(bool isCloneChildren)
范围类型描述
isCloneChildrenBoolean为 True 则递归克隆指定节点下的子树;为 false 则仅克隆节点本身。

返回值

克隆的节点。

评论

此方法用作节点的复制构造函数。 克隆的节点没有父节点,但与原始节点属于同一文档。

此方法始终执行节点的深度复制。isCloneChildren parameter 指定是否也执行复制所有子节点。

例子

展示如何克隆复合节点。

Document doc = new Document();
Paragraph para = doc.FirstSection.Body.FirstParagraph;
para.AppendChild(new Run(doc, "Hello world!"));

// 以下是克隆复合节点的两种方法。
// 1 - 创建一个节点的克隆,并创建其每个子节点的克隆。
Node cloneWithChildren = para.Clone(true);

Assert.IsTrue(((CompositeNode)cloneWithChildren).HasChildNodes);
Assert.AreEqual("Hello world!", cloneWithChildren.GetText().Trim());

// 2 - 创建一个节点本身的克隆,没有任何子节点。
Node cloneWithoutChildren = para.Clone(false);

Assert.IsFalse(((CompositeNode)cloneWithoutChildren).HasChildNodes);
Assert.AreEqual(string.Empty, cloneWithoutChildren.GetText().Trim());

也可以看看