我正在尝试大致使用scala.xml.pull.XMLEventReader:
private val in =
new XMLEventReader(Source.fromInputStream(
new BufferedInputStream(sock.getInputStream()), "utf-8")).buffered
然后我用:
迭代XML流while (in.hasNext) {
in.next match { ... }
}
这里的问题是xmleventreader阻塞了“hasNext”并且没有警告我知道已经到达的新XML标签(我使用TCP Dump监视流...并且可以看到< success xmlns =“blah” />标记在结尾但仍然没有得到通知,之前的标记已关闭)。
我在scala 2.8.0,2.8.1和2.9.0
中尝试过这个也没有使用“.buffered”而没有使用BufferedInputStream,但结果是相同的。
有没有希望,或者XMLEventReader刚刚破裂?
答案 0 :(得分:1)
MarkupParser
被打破了。关闭标记时,它总是获得下一个字符。由于您正在从流中读取,因此会阻塞,直到提供此类字符或关闭流。