Как отфильтровать недопустимый символ XML в Java - PullRequest
3 голосов
/ 20 января 2011

Я создаю веб-сервис.

Кто-то помещает недопустимые символы в нашу базу данных.

Теперь, когда я пытаюсь получить эти строки и отправить их через веб-сервис, клиент задыхается.

Я получаю сообщение об ошибке, например:

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))

Как удалить этот символ в Java?

Ответы [ 2 ]

3 голосов
/ 20 января 2011
/**
 * 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();
}
3 голосов
/ 20 января 2011

Проверьте это:

stringName.replaceAll("[^\\p{Print}]", "");

Работает как шарм.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...