Dom4j在某节点上添加已有的Element节点

需求:有两个xml文件需要解析,将A文件的节点解析之后放到了一个List list的集合中了,然后解析B文件,将list的内容填充到B中去。

众所周知,下面这段代码是可以添加一个节点元素的。

SAXReader reader = new SAXReader();
Document doc = reader.read(new File("C:\Users\86158\Desktop\tmp.xml"));
Element root = doc.getRootElement();
//添加一个节点,节点名字叫el
Element el = root.addElement("el");

但是我这里不需要新建Element对象了,我有现成的Element对象,我又找了一下方法,果然找到了这个适合的,如下图。

Dom4j在某节点上添加已有的Element节点_第1张图片

正准备收工的时候,报了如下的错。原来Element对象中,还有一个属性对象设置的是父节点信息,那么我们在添加这个元素之前,需要把父节点信息先设置为null,然后才可以添加。

org.dom4j.IllegalAddException: The node "org.dom4j.tree.DefaultElement@4b002002 [Element: ]" could not be added to the element "neType" because: The Node already has an existing parent of "neType"
	at org.dom4j.tree.AbstractElement.addNode(AbstractElement.java:1521)
	at org.dom4j.tree.AbstractElement.add(AbstractElement.java:1002)
	at com.genew.nms.cloud.nmstopo.controller.xmlTransportController.lambda$null$1(xmlTransportController.java:101)
	at java.lang.Iterable.forEach(Iterable.java:75)

 最终代码如下,正常添加完成,大功告成。

Dom4j在某节点上添加已有的Element节点_第2张图片

你可能感兴趣的:(java,xml)