'adding two or more xml files which have same structure as a child to another root element

I am using nu.xom java library, when adding the first xml root node to element, i am getting "MultipleParentException". Can some one please provide solution, Thanks in advance.

Below are sample xml files:

<sqa>
  <element1>1<element1>
  <structelement>
     <element2>2<element2>
     <element2>2<element2>
  </structelement>
</sqa>
<sqa>
  <element1>4<element1>
  <structelement>
     <element2>5<element2>
     <element2>5<element2>
  </structelement>
</sqa>

output xml:

<root>
<sqa>
  <element1>1<element1>
  <structelement>
     <element2>2<element2>
     <element2>2<element2>
  </structelement>
</sqa>
<sqa>
  <element1>4<element1>
  <structelement>
     <element2>5<element2>
     <element2>5<element2>
  </structelement>
</sqa>
</root>


Solution 1:[1]

Please change your xml as below

<sqa>
  <element1>1</element1>
  <structelement>
     <element2>2</element2>
     <element2>2</element2>
  </structelement>
</sqa>
<sqa>
  <element1>4</element1>
  <structelement>
     <element2>5</element2>
     <element2>5</element2>
  </structelement>
</sqa>

it seems you forgot the close the tags element1 and element2 to prevent reference of the previous document

And write code using .copy() method

Builder parser = new Builder();
        
Builder builder = new Builder();
Document root = builder.build("<root></root>", null);
        
Document doc = parser.build("aa.xml");
root.getRootElement().appendChild(doc.getRootElement().copy());
        
doc = parser.build("aa2.xml");
root.getRootElement().appendChild(doc.getRootElement().copy());
        
System.out.println(root.toXML());

You will get this output

<?xml version="1.0"?>
<root><sqa>
  <element1>4</element1>
  <structelement>
     <element2>5</element2>
     <element2>5</element2>
  </structelement>
</sqa><sqa>
  <element1>1</element1>
  <structelement>
     <element2>2</element2>
     <element2>2</element2>
  </structelement>
</sqa></root>

Sources

This article follows the attribution requirements of Stack Overflow and is licensed under CC BY-SA 3.0.

Source: Stack Overflow

Solution Source
Solution 1