嗨,我在使用XMLStreamReader读取xml中的转义字符时遇到问题。
例如我有这个元素:
<a>foo&bar</a>
当我读取该值时,
&
之后的所有内容都会被截断,并且我得到的值是“foo”有什么想法可以解决吗?
最佳答案
我不确定是什么问题-我的测试能否产生您期望的结果。
运行
XMLInputFactory xmlInputFactory = XMLInputFactory.newInstance();
XMLStreamReader reader = xmlInputFactory.createXMLStreamReader(
new StringReader("<tag>foo&bar</tag>"));
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个事件发送。