scala.xml.pull.XMLEventReader无法跟上流

时间:2011-05-17 10:52:54

标签: xml scala

我正在尝试大致使用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刚刚破裂?

1 个答案:

答案 0 :(得分:1)

MarkupParser被打破了。关闭标记时,它总是获得下一个字符。由于您正在从流中读取,因此会阻塞,直到提供此类字符或关闭流。