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"))