How to filter out illegal XML character in Java
I'm building a web service.
Some one put illegal characters into our database.
Now when I try to retrieve those strings and send them via a webservice, the client chokes.
I get an error such as :
com.sun.xml.ws.encoding.soap.DeserializationException: Failed to read a response: javax.xml.bind.UnmarshalException
- with linked exception:
[com.ctc.wstx.exc.WstxUnexpectedCharException: Illegal character ((CTRL-CHAR, code 18开发者_如何学编程))
How can I remove this character in Java?
/**
* 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();
}
Check this out:
stringName.replaceAll("[^\\p{Print}]", "");
Works like a charm.
精彩评论