2011-06-16 50 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等同值。这在未来的版本中可能会改变。