Спецификация XML определяет подмножество символов Unicode, которые позволяются в XML-документах: http://www.w3.org/TR/REC-xml/#charsets.
Как я отфильтровываю эти символы от Строки в Java?
простой тестовый сценарий:
Assert.equals("", filterIllegalXML(""+Character.valueOf((char) 2)))
Найти все недопустимые символы для XML нетривиально. Вам необходимо вызвать или повторно реализовать XMLChar.isInvalid () из Xerces,
http://kickjava.com/src/org/apache/xerces/util/XMLChar.java.htm
Использование StringEscapeUtils.escapeXml (xml)
из commons-lang приведет к экранированию, а не фильтрации символов.
Эта страница включает метод Java для удаления недопустимых символов XML путем проверки соответствия каждого символа спецификации, хотя он не проверяет крайне нежелательные символы
Кстати, экранирование символов не является решением проблемы, поскольку спецификации XML 1.0 и 1.1 также не допускают использование недопустимых символов в экранированном виде.
Вы можете использовать регулярное выражение (Regular Expression) для выполнения работы, см. Пример в комментариях здесь