十年網(wǎng)站開發(fā)經(jīng)驗(yàn) + 多家企業(yè)客戶 + 靠譜的建站團(tuán)隊(duì)
量身定制 + 運(yùn)營維護(hù)+專業(yè)推廣+無憂售后,網(wǎng)站問題一站解決
dom4j特殊字符處理
問題:
最近在做項(xiàng)目時(shí),遇到了解析xml問題。
使用dom4j解析xml信息時(shí),如果屬性值中包含&等特殊字符時(shí),解析會(huì)提示如下異常:
java.lang.RuntimeException: 生成Document對象異常
1.dom4j解析xml:
經(jīng)過查詢得知dom4j在解析xml信息時(shí),需要對一些特殊字符進(jìn)行特殊處理:
下面是五個(gè)在XML文檔中預(yù)定義好的實(shí)體:
< < 小于號(hào)
> > 大于號(hào)
& & 和
' ' 單引號(hào)
" " 雙引號(hào)
比如你想輸出“&”,那你的xml中要寫成“&”,當(dāng)然你這個(gè)值是寫在屬性里的,是value=""這樣的形式。
2.dom4j生成xml:
在使用dom4j生成xml文件時(shí),對于特殊字符“&”,總會(huì)自動(dòng)生成"&",
因此在輸入"<"或者">"時(shí),<代表<,結(jié)果將&轉(zhuǎn)成"&",就變成了"<",
因此在使用xsl生成html時(shí)造成"<"無法正常使用,解決方法是:
在創(chuàng)建writer對象時(shí)操作如下:
XMLWriter writer = new XMLWriter(fmt); //以輸出格式為參數(shù)創(chuàng)建xml輸出對象
writer.setEscapeText(false);
這樣&符號(hào)就不會(huì)被轉(zhuǎn)義了。
請參閱dom4j文檔
setEscapeText
public void setEscapeText(boolean escapeText)
Sets whether text output should be escaped or not. This is enabled by default. It could be disabled if the output format is textual, like in XSLT where we can have xml, html or text output.
Parameters:
escapeText - DOCUMENT ME!
另外有需要云服務(wù)器可以了解下創(chuàng)新互聯(lián)scvps.cn,海內(nèi)外云服務(wù)器15元起步,三天無理由+7*72小時(shí)售后在線,公司持有idc許可證,提供“云服務(wù)器、裸金屬服務(wù)器、高防服務(wù)器、香港服務(wù)器、美國服務(wù)器、虛擬主機(jī)、免備案服務(wù)器”等云主機(jī)租用服務(wù)以及企業(yè)上云的綜合解決方案,具有“安全穩(wěn)定、簡單易用、服務(wù)可用性高、性價(jià)比高”等特點(diǎn)與優(yōu)勢,專為企業(yè)上云打造定制,能夠滿足用戶豐富、多元化的應(yīng)用場景需求。