gpt4 book ai didi

java - XMLStreamReader 和一个真正的流

转载 作者:塔克拉玛干 更新时间:2023-11-03 05:30:49 26 4
gpt4 key购买 nike

更新 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 流,并且不想将整个源文本加载到内存中。

谢谢你的帮助,尤里。

最佳答案

你可以得到你想要的 - 部分解析,但是当你到达当前可用数据的末尾时你不能关闭流。保持流打开,解析器将在到达流末尾时简单地阻塞。当您有更多数据时,将其添加到流中,解析器将继续。

这种安排需要两个线程 - 一个线程运行解析器,另一个线程获取数据。要桥接这两个线程,您可以使用管道 - PipeInputStream 和 PipeOutputStream 对,它们将数据从读取器线程推送到解析器使用的输入流中。 (解析器正在从 PipeInputStream 读取数据。)

关于java - XMLStreamReader 和一个真正的流,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2653918/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com