我希望以下内容可以在 StAX 中解析,
<something a="b"/>
<something a="b"/>
但是当你到达第二个元素时它会窒息。因为没有共同的根元素。 (我不太确定为什么拉式解析器会关心这个特定问题……无论如何……)
我可以伪造一个根元素,例如 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
所以我的问题只是:有什么办法可以避免这种黑客攻击吗?我可以将解析器放入某种“片段”模式?
最佳答案
没有。 StAX API 不支持片段。 XMLStreamReader
只适用于一个 XML 文档。但是,您的“hack”一点也不差……
关于java - 使用 STaX 解析多个 XML 片段,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9899099/