J'ai cherché sur le Web et j'ai cherché stackoverflow de haut en bas. Pas de solution. Bien que j'ai trouvé des solutions comment faire cela dans le pur xslt here.Fusion efficace de plusieurs fichiers xml de grande taille en un
Mais le problème est que le fichier XML résultant aura une taille de plusieurs centaines de Mo. Je dois donc le faire avec SAX en Java. (S'il vous plaît pas de solution xslt, bien que je l'ai marqué avec xslt ;-))
Laissez-moi expliquer avec plus de détails. J'ai plusieurs fichiers xml multiples (InputSteam préférables) qui devraient être analysés. Les fichiers ou les regards de InputStream comme
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 = résultant xml. Cela ressemblera à
<root>
<doc>
<tag>test1</tag>
</doc>
<doc>
<tag>test2</tag>
</doc>
...
<doc>
<tag>test3</tag>
</doc>
<doc>
<tag>test4</tag>
</doc>
...
</root>
Est-ce que quelqu'un a une solution ou un lien pour cela? Est-ce possible en implémentant un InputSource personnalisé ou dois-je utiliser un ContentHandler personnalisé? Ou est-ce possible avec joost/stx?
La bonne chose si je pouvais utiliser un ContentHandler serait que je pourrais appliquer quelques transformations mineures (j'ai déjà implémenté cela). Mais le problème est que je ne sais pas un moyen de transmettre plusieurs fichiers ou des années InputStream comme InputSource:
XMLReader xmlReader = XMLReaderFactory.createXMLReader();
xmlReader.setContentHandler(customHandler);
xmlReader.parse(getInputSource()); // only one InputStream possible
ou devrais-je analyser les InputStreams directement dans mon ContentHandler?
hmmh, dans xslt, vous pouvez rechercher le premier nœud et le dernier nœud, où que vous soyez. C'est à dire: tout doit être en mémoire ... par définition de xslt. Ou que penses-tu? – Karussell
Il existe un assez grand sous-ensemble de programmes XSLT dont vous n'avez pas besoin pour exécuter les arbres DOM complets en mémoire. –
ah, ok merci. Maintenant je comprends – Karussell