更新 Java社区中没有现成的XML解析器可以执行NIO和XML解析。这是我找到的最接近的,并且不完整:http://wiki.fasterxml.com/AaltoHome

我有以下代码:

InputStream input = ...;
XMLInputFactory xmlInputFactory = XMLInputFactory.newInstance();

XMLStreamReader streamReader = xmlInputFactory.createXMLStreamReader(input, "UTF-8");

问题是,为什么#createXMLStreamReader()方法期望在输入流中包含整个XML文档?如果它似乎无法处理一部分XML数据,为什么将其称为“流读取器”?例如,如果我喂:
<root>
    <child>

这样做,它会告诉我我缺少结束标记。甚至在我开始迭代流阅读器本身之前。我怀疑我只是不知道如何正确使用XMLStreamReader。我应该能够为它逐块提供数据,对吗?我需要它是因为我正在处理来自网络套接字的XML流,并且不想将整个源文本加载到内存中。

谢谢你的帮助,
尤里

最佳答案

如果您绝对需要内容“推送”的NIO,那么有开发人员有兴趣完成Aalto的API。解析器本身是完整的Stax实现,以及替代的“推送输入”(馈送输入而不是使用InputStream)。因此,如果您有兴趣,您可能想要查看邮件列表。并非所有人都阅读StackOverflow问题。 :-)

10-07 20:34