Cómo fusionar> 1000 archivos xml en uno usando Java

Estoy tratando de combinar muchos archivos xml en uno. Lo he hecho con éxito en DOM, pero esta solución está limitada a unos pocos archivos. Cuando lo ejecuto en varios archivos> 1000, obtengo un java.lang.OutOfMemoryError.

Lo que quiero lograr es donde tengo los siguientes archivos

archivo 1:

<root>
....
</root>

archivo 2:

<root>
......
</root>

archivo n:

<root>
....
</root>

dando como resultado: salida:

<rootSet>
<root>
....
</root>
<root>
....
</root>
<root>
....
</root>
</rootSet>

Esta es mi implementación actual:

    DocumentBuilderFactory docFactory = DocumentBuilderFactory.newInstance();
    DocumentBuilder docBuilder = docFactory.newDocumentBuilder();
    Document doc = docBuilder.newDocument();
    Element rootSetElement = doc.createElement("rootSet");
    Node rootSetNode = doc.appendChild(rootSetElement);
    Element creationElement = doc.createElement("creationDate");
    rootSetNode.appendChild(creationElement);
    creationElement.setTextContent(dateString); 
    File dir = new File("/tmp/rootFiles");
    String[] files = dir.list();
    if (files == null) {
        System.out.println("No roots to merge!");
    } else {
        Document rootDocument;
            for (int i=0; i<files.length; i++) {
                       File filename = new File(dir+"/"+files[i]);        
               rootDocument = docBuilder.parse(filename);
               Node tempDoc = doc.importNode((Node) Document.getElementsByTagName("root").item(0), true);
               rootSetNode.appendChild(tempDoc);
        }
    }   

He experimentado mucho con xslt, sax, pero parece que me estoy perdiendo algo. Cualquier ayuda sería muy apreciada

Respuestas a la pregunta(6)

Su respuesta a la pregunta