- Iterate over the entire node_id of the elements in the file2.
- For each of them, find the corresponding node_x element in file1.
- Add node_x from file1 to file2
The following code illustrates this:
DocumentBuilder builder = DocumentBuilderFactory.newInstance().newDocumentBuilder();
Document doc1 = builder.parse(new File("file1.xml"));
Document doc2 = builder.parse(new File("file2.xml"));
NodeList list = doc2.getElementsByTagName("node_id");
for(int i = 0 ; i< list.getLength() ; i++){
Node n = list.item(i);
String id = n.getTextContent();
NodeList list2 = doc1.getElementsByTagName("node_"+id);
for(int j = 0 ; j< list2.getLength() ; j++){
Node m = list2.item(j);
Node imp = doc2.importNode(m,true);
n.getParent().appendChild(imp);
}
}
TransformerFactory tFactory = TransformerFactory.newInstance();
Transformer transformer = tFactory.newTransformer();
Source source = new DOMSource(doc2);
Result output = new StreamResult(new File("merged.xml"));
transformer.transform(source, output);
Result:
<root>
<node>
<node_id>1</node_id>
<node_1>This is 1</node_1>
</node>
<node>
<node_id>2</node_id>
<node_2>This is 2</node_2>
</node>
<node>
<node_id>3</node_id>
<node_3>This is 3</node_3>
</node>
</root>
source
share