I was hoping the following would be parseable in StAX,
<something a="b"/>
<something a="b"/>
But it chokes when you reach the second element. As there is no common root element. (I'm not too sure why a pull parser cares about this particular issue... anyway...)
I can fake a root element, e.g. Guava:
InputSupplier<Reader> join = CharStreams.join(
newReaderSupplier("<root>"),
newReaderSupplier(new File("...")),
newReaderSupplier("</root>"));
XMLInputFactory xif = XMLInputFactory.newInstance();
XMLStreamReader xsr = xif.createXMLStreamReader(join.getInput());
xsr.nextTag(); // Skip the fake root
So my question is just: Is there any way to avoid this hack? Some 'fragment' mode that I can put the parser into?
The Woodstox StAX implementation does apparently support this: http://woodstox.codehaus.org/3.2.9/javadoc/com/ctc/wstx/api/WstxInputProperties.html#P_INPUT_PARSING_MODE
As it happens we are already using Woodstox in some places, but I didn't think to Google for Woodstox-specific options!