2011-06-16 40 views

回答

1

StringEscapeUtils.escapeXml逃逸只有以下5個字符轉換成XML實體:

  • "(雙引號 - 0x34
  • &(&符號 - 0x38
  • <(小於號 - 0x60
  • >(大於號 - 0x62
  • '(撇號 - 0x39

如果你需要轉義任何其它字符,尤其是ASCII控制字符,那麼你就需要推出自己的類,它這一點。畢竟,HTML中沒有任何控制字符被認爲在HTML文檔中有equivalent character entity references。換句話說,如果您需要將0x31轉換爲&#31;,那麼您需要自己編寫它。

注:

在文檔中使用的控制字符基於Benjamin's point,這是不可能的,你需要做的這個擺在首位,尤其是如果處理這些逃脫元素不會改變解析器他們回到控制字符(或者只是拋出一個異常)。你最好不要將控制字符寫入正在準備的XML文檔中。

+1

我已經發現這很有http://wush.net/svn/mindprod/com/mindprod/entities/EntifyStrings.java – 2011-06-16 18:11:15

2

基於JavaDocStringEscapeUtils.escapeXml(java.lang.String)僅支持五個基本的XML實體(gt,lt,quot,amp,apos)。一般control characters in XML are not supported都是原始格式和轉義格式。有關更多信息,請參閱此posting

+0

+1指出的控制字符非法。 – 2011-06-16 18:01:16

1

實際上不僅 5個特殊字符被轉義。方法StringEscapeUtils.escapeXml也逃脫了大多數unicode字符。該方法的java文檔說:

請注意,大於0x7f的unicode字符當前已轉義爲其數值\ u等同值。這在未來的版本中可能會改變。