需求:有两个xml文件需要解析,将A文件的节点解析之后放到了一个List<Element> 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对象,我又找了一下方法,果然找到了这个适合的,如下图。
正准备收工的时候,报了如下的错。原来Element对象中,还有一个属性对象设置的是父节点信息,那么我们在添加这个元素之前,需要把父节点信息先设置为null,然后才可以添加。
org.dom4j.IllegalAddException: The node "org.dom4j.tree.DefaultElement@4b002002 [Element: <Alarm attributes: [org.dom4j.tree.DefaultAttribute@6688c683 [Attribute: name alarmId value "ET1029_PC10072_SP0"], org.dom4j.tree.DefaultAttribute@3cf84cda [Attribute: name severity value "Major"], org.dom4j.tree.DefaultAttribute@34d21c83 [Attribute: name category value "environment"], org.dom4j.tree.DefaultAttribute@2986444e [Attribute: name isADAC value "false"], org.dom4j.tree.DefaultAttribute@99a3323 [Attribute: name isISA value "false"]]/>]" 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)
最终代码如下,正常添加完成,大功告成。