我的文字中有芬兰字符(例如ä,ö和å)在XML中不安全,是否有用于此目的的库/框架?
答案 0 :(得分:3)
XML支持Unicode,因此您真正需要逃脱的只有五个基本XML实体(gt,lt,quot,amp,apos)。如果你使用StringEscapeUtils.escapeXML,它会把你所有的ä,ö和å变成丑陋的\ uabcd东西。
答案 1 :(得分:2)
因此,对于xml的ecsape字符串,最好的方法是StringEscapeUtils.escapeXML 来自Commons Lang,但正如这里的某人已经说过这还不够 例如。如果想要拥有有效的xml,则应该从字符串中删除一些不可打印的控制字符。 为此,我使用此代码段:
/**
* Function to strip control characters from a string.
* Any character below a space will be stripped from the string.
* @param iString the input string to be stripped.
* @return a string containing the characters from iString minus any control characters.
*/
public String stripControlChars(String iString) {
StringBuffer result = new StringBuffer(iString);
int idx = result.length();
while (idx-- > 0) {
if (result.charAt(idx) < 0x20 && result.charAt(idx) != 0x9 &&
result.charAt(idx) != 0xA && result.charAt(idx) != 0xD) {
if (log.isDebugEnabled()) {
log.debug("deleted character at: "+idx);
}
result.deleteCharAt(idx);
}
}
return result.toString();
}
// Then
String s = org.apache.commons.lang3.StringEscapeUtils.escapeXml(stripControlChars(s));
同样重要的是使用StringEscapeUtils.escapeXML Commons Lang版本3作为该方法的先前版本,其中需要更多地转义。
答案 2 :(得分:1)
Commons Lang采用了escapeXML方法,可以满足您的需求。