我搜索了网络,并上下搜索了stackoverflow。没有解决方案。虽然我在这里找到了如何在纯 xslt 中执行此操作的解决方案。
但问题是生成的 xml 将有数百 MB 大。所以我必须用 Java 中的 SAX 来做这件事。(请不要使用 xslt 解决方案,尽管我用 xslt 对其进行了标记;-))
让我更详细地解释一下。我有几个应该解析的多个 xml 文件(最好是 InputSteam)。文件或 InputStream 的样子
输入流1
<root>
<doc>
<tag>test1</tag>
</doc>
<doc>
<tag>test2</tag>
</doc>
...
</root>
输入流2
<root>
<doc>
<tag>test3</tag>
</doc>
<doc>
<tag>test4</tag>
</doc>
...
</root>
inputstream1+inputstream2+...+inputstreamN =结果 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
还是应该直接在我的 ContentHandler 中解析 InputStreams?