Java Dom4j从一个xml分离/复制节点并添加到另一个xml

Java Dom4j从一个xml分离/复制节点并添加到另一个xml,java,dom4j,Java,Dom4j,实际上,我正在遍历srcxml,并将其转换为另一个目的地xml。但是,srcxml的一部分将被复制并添加到目标。但当我尝试这样做时,我得到了以下异常: could not be added to the element "<DestinationParent>" because: The Node already has an existing parent of "<SourceParent" 您需要在要移动的节点上调用detach()。从 由于元素实现了节点,如果您需要转

实际上,我正在遍历
src
xml,并将其转换为另一个
目的地
xml。但是,
src
xml的一部分将被复制并添加到
目标
。但当我尝试这样做时,我得到了以下异常:

could not be added to the element "<DestinationParent>" because: The Node already has an existing parent of "<SourceParent"

您需要在要移动的节点上调用
detach()
。从


由于
元素
实现了
节点
,如果您需要转换回
元素
,只需通过强制转换即可(前提是您知道您分离的是
元素
)。您的另一个选择可能是复制
元素
。使用您的代码作为起点:

Element moduleRootElement = doc.addElement("Request");
if (rootElement.getName().equals("someName") {
    moduleRootElement.add(childElement.getName());
} else {
    moduleRootElement.add(rootElement.createCopy());
}
看起来你真的试过了,但没有完全达到目的。请记住,在java中,使用
=
将变量重新分配给新对象。所有对它的现有引用都已断开

作为补充说明,您可能还需要使用

if(rootElement.getName().equals("someName"))

您可以提供更多详细信息,而不是使用
==

。像示例代码、输入和输出一样?如何将节点转换为元素?如果没有,如何创建新的
someOtherElement
元素
实现
节点
Element moduleRootElement = doc.addElement("Request");
if (rootElement.getName().equals("someName") {
    moduleRootElement.add(childElement.getName());
} else {
    moduleRootElement.add(rootElement.createCopy());
}
if(rootElement.getName().equals("someName"))