Я искал в Интернете и искал stackoverflow вверх и вниз. Нет решения. Хотя я нашел решения, как сделать это в чистом xslt здесь .
Но проблема в том, что полученный xml будет иметь размер в несколько сотен МБ. Так что я должен сделать это с SAX в Java. (пожалуйста, не используйте решение xslt, хотя я пометил его xslt; -))
Позвольте мне объяснить более подробно. У меня есть несколько файлов XML (предпочтительно InputSteam's), которые должны быть проанализированы. Файлы или 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>
inputtream1 + inputtream2 + ... + inputtreamN = результирующий xml . Это будет выглядеть как
<root>
<doc>
<tag>test1</tag>
</doc>
<doc>
<tag>test2</tag>
</doc>
...
<doc>
<tag>test3</tag>
</doc>
<doc>
<tag>test4</tag>
</doc>
...
</root>
У кого-нибудь есть решение или ссылка для этого? Это возможно через реализацию пользовательского InputSource или я должен использовать пользовательский ContentHandler? Или это возможно с joost / stx ?
Хорошо, если бы я мог использовать ContentHandler, то мог бы применить некоторые незначительные преобразования (я уже реализовал это). Но тогда проблема в том, что я не знаю, как передать несколько файлов или InputStream как InputSource:
XMLReader xmlReader = XMLReaderFactory.createXMLReader();
xmlReader.setContentHandler(customHandler);
xmlReader.parse(getInputSource()); // only one InputStream possible
или я должен анализировать InputStreams непосредственно в моем ContentHandler?