Я искал в Интернете, и я искал stackoverflow вверх и вниз. Нет решения. Хотя я нашел решения, как это сделать в чистом xslt here.Эффективное слияние нескольких больших файлов xml в один
Но проблема в том, что полученный xml будет иметь несколько сотен мегабайт. Поэтому я должен сделать это с помощью SAX на Java. (пожалуйста, не xslt решение, хотя я отметил его с xslt ;-))
Позвольте мне объяснить более подробно. У меня есть несколько нескольких xml-файлов (предпочтительнее InputSteam), которые необходимо проанализировать. Файлы или внешний вид InputStream как
inputstream1
<root>
<doc>
<tag>test1</tag>
</doc>
<doc>
<tag>test2</tag>
</doc>
...
</root>
inputstream2
<root>
<doc>
<tag>test3</tag>
</doc>
<doc>
<tag>test4</tag>
</doc>
...
</root>
inputstream1 + inputstream2 + ... + inputstreamN = в результате XML. Это будет выглядеть как
У кого-нибудь есть решение или ссылка на это? Возможно ли это, используя пользовательский InputSource или я должен использовать собственный ContentHandler? Или это возможно с joost/stx?
Хорошая вещь, если бы я мог использовать ContentHandler, заключалась бы в том, что я мог бы применить некоторые незначительные преобразования (я уже реализовал это). Но проблема в том, что я не знаю, как передать несколько файлов или InputStream в качестве InputSource:
XMLReader xmlReader = XMLReaderFactory.createXMLReader();
xmlReader.setContentHandler(customHandler);
xmlReader.parse(getInputSource()); // only one InputStream possible
или я должен разобрать InputStreams непосредственно в моей ContentHandler?
hmmh, в xslt вы можете искать первый узел и последний узел независимо от того, где вы находитесь. Т.е. все должно быть в памяти ... по определению xslt. Или что вы думаете? – Karussell
Существует довольно большое подмножество XSLT-программ, для которых вам не нужны полные деревья DOM в памяти. –
ах, хорошо спасибо. Теперь я понимаю – Karussell