多くのxmlファイルを1つにマージしようとしています。私はDOMでこれを正常に実行しましたが、このソリューションはいくつかのファイルに制限されています。1000を超える複数のファイルで実行すると、java.lang.OutOfMemoryErrorが発生します。
私が達成したいのは、次のファイルがある場所です
ファイル1:
<root>
....
</root>
ファイル2:
<root>
......
</root>
ファイルn:
<root>
....
</root>
結果:出力:
<rootSet>
<root>
....
</root>
<root>
....
</root>
<root>
....
</root>
</rootSet>
これは私の現在の実装です:
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);
}
}
私はxslt、saxで多くの実験をしましたが、何かが足りないようです。どんな助けでも大歓迎です