我不确定问题是什么 – 我的测试产生了你期望的结果.
运行
XMLInputFactory xmlInputFactory = XMLInputFactory.newInstance();
XMLStreamReader reader = xmlInputFactory.createXMLStreamReader(
new StringReader("foo&bar"));
PrintWriter pw = new PrintWriter(System.out, true);
while (reader.hasNext())
{
reader.next();
pw.print(reader.getEventType());
if (reader.hasText())
pw.append(' ').append(reader.getText());
pw.println();
}
产生
1
4 foo
4 &
4 bar
2
8
在JDK 1.6.0.11上 – 相当老,我知道.如果结果不同,我会升级并回发.
要记住的一件事是,XMLStreamReader可以(并且确实!)将字符数据分成几个块,如上所示 – 重复的4个事件(4 = CHARACTERS)表示元素的文本作为3个事件发送.