您好我在使用XMLStreamReader讀取xml中的轉義字符時出現問題。使用XMLStreamReader讀取轉義字符
比如我有這樣的元素:
<a>foo&bar</a>
,當我讀出的值,在&
後一切都被截斷,我得到的值是「富」
任何想法如何可能被修復?
您好我在使用XMLStreamReader讀取xml中的轉義字符時出現問題。使用XMLStreamReader讀取轉義字符
比如我有這樣的元素:
<a>foo&bar</a>
,當我讀出的值,在&
後一切都被截斷,我得到的值是「富」
任何想法如何可能被修復?
我不確定問題是什麼 - 我的測試會產生您期望的結果。
運行
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個事件。
要強制XMLStreamReader的返回一個字符串,你必須設置javax.xml.stream.isCoalescing
屬性由XMLStreamReader#next() documentation所示:用樣品輸入
XMLInputFactory factory = XMLInputFactory.newInstance();
factory.setProperty("javax.xml.stream.isCoalescing", true); // decode entities into one string
XMLStreamReader xmlStreamReader = factory.createXMLStreamReader(stringReader);
您可以使用常數財產如[XMLInputFactory](https://docs.oracle.com/javase/8/docs/api/javax/xml/stream/XMLInputFactory.html#IS_COALESCING)中所定義。 – turtlesallthewaydown 2015-12-17 12:00:29
小運行的例子... – 2010-05-30 12:36:03