如何在Java中使用数字字符引用转义字符串
问题描述:
您好,感谢您阅读我的文章。如何在Java中使用数字字符引用转义字符串
阿帕奇共享StringEscapeUtils.escapeHtml3()和StringEscapeUtils.escapeHtml4()函数允许,特别是字符转换为急性(如E,A ...)在一个串入其中有 字符实体引用格式&name;其中name是区分大小写的字母数字字符串。
我怎样才能得到一个给定的字符串,数字字符引用,而不是转义字符串(&为#nnnn;或& #xhhhh;其中NNNN是十进制形式的代码点,HHHH是十六进制形式的代码点) ?
我实际上需要为XML文档转义字符串,它不知道这样的实体,例如& eacute; & agrave;等等。
此致敬意。
答
为了解决这个问题,我写这需要一个字符串作为参数,并替换,在该串的方法,字符实体引用(如é
)与其对应的数字字符引用(é
在这种情况下)。
我用引用这个W3C名单:http://www.sagehill.net/livedtd/xhtml1-transitional/xhtml-lat1.ent.html
诺塔:这将是巨大的,可以到另一个参数传递给StringEscapeUtils.escapeHtml4()
方法来判断是否我们想在字符实体引用或数字字符引用输出字符串...
答
创建CharacterTranslator
:
CharacterTranslator XML_ESCAPE = StringEscapeUtils.ESCAPE_XML11.with(
NumericEntityEscaper.between(0x7f, Integer.MAX_VALUE));
,并使用它:
XML_ESCAPE.translate(…)