[英]Reading escape characters with XMLStreamReader
嗨,我在使用XMLStreamReader讀取xml內的轉義字符時遇到問題。
例如我有這個元素:
<a>foo&bar</a>
當我讀取該值時, &
之后的所有內容 被截斷,並且我得到的值是“ foo”
有什么想法可以解決嗎?
要強制XMLStreamReader返回單個字符串,必須設置XMLStreamReader#next()文檔指示的javax.xml.stream.isCoalescing
屬性:
XMLInputFactory factory = XMLInputFactory.newInstance();
factory.setProperty("javax.xml.stream.isCoalescing", true); // decode entities into one string
XMLStreamReader xmlStreamReader = factory.createXMLStreamReader(stringReader);
我不確定是什么問題-我的測試會產生您期望的結果。
跑步
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個事件發送。
讀取字符串后,是否有任何方法可以保留&在下一個輸出中? 喜歡:
1
4 foo&bar
2
8
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.