Sto cercando di unire molti file XML in uno. L'ho fatto con successo in DOM, ma questa soluzione è limitata a pochi file. Quando lo eseguo su più file> 1000, ottengo un java.lang.OutOfMemoryError.Come unire> 1000 file xml in uno utilizzando Java
Quello che voglio ottenere è dove ho i seguenti file
file di 1:
<root>
....
</root>
file di 2:
<root>
......
</root>
n file:
<root>
....
</root>
risultante in: uscita:
<rootSet>
<root>
....
</root>
<root>
....
</root>
<root>
....
</root>
</rootSet>
Questo è il mio attuale implementazione:
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);
}
}
ho sperimentato molto con XSLT, sax, ma mi sembra di tenere manca qualcosa. Qualsiasi aiuto sarebbe molto apprezzato
C'è qualche ragione per cui è necessario mantenere il DOM in memoria? Hai bisogno di più di una semplice concatenazione di stringhe in questo caso? –
la semplice concatenazione mantiene la dichiarazione xml se ogni singolo file xml viene unito. In effetti, in linea di principio, sto cercando una semplice concatenazione di file xml. – Andra
Perché non inserire più file XML in un unico archivio? Finisce come un file. Rendilo non compresso se la velocità di lettura/scrittura è importante, compressa se la dimensione del file o la larghezza di banda sono più importanti. –