XMLStreamReader和一个真正的流

Yur*_*ish 6 java xml streaming stax

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

我有以下代码:

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

XMLStreamReader streamReader = xmlInputFactory.createXMLStreamReader(input, "UTF-8");
Run Code Online (Sandbox Code Playgroud)

问题是,为什么方法#createXMLStreamReader()希望在输入流中有一个完整的XML文档?为什么它被称为"流阅读器",如果它似乎无法处理XML数据的一部分?例如,如果我喂:

<root>
    <child>
Run Code Online (Sandbox Code Playgroud)

它会告诉我,我错过了结束标签.甚至在我开始迭代流阅读器本身之前.我怀疑我只是不知道如何正确使用XMLStreamReader.我应该可以按件提供数据,对吗?我需要它,因为我正在处理来自网络套接字的XML流,并且不想将整个源文本加载到内存中.

谢谢你的帮助,尤里.

Sta*_*Man 1

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