У меня похожая проблема при разборе содержимого австралийских экспортных тарифов в XML-документ. Я не могу использовать предложенные здесь решения, такие как:
- Используйте внешний инструмент (банку), вызываемый из командной строки.
- Попросите Австралийскую таможню очистить исходный файл.
Единственный метод решения этой проблемы на данный момент - это перебирать все содержимое исходного файла, посимвольно и проверять, не принадлежит ли каждый символ диапазону от 0x00 до 0x1F включительно. Это можно сделать, но мне было интересно, есть ли лучший способ использования методов Java для типа String.
EDIT
Я нашел решение, которое может быть полезно для других: используйте метод Java String # ReplaceAll для замены или удаления любых нежелательных символов в документе XML.
Пример кода (я удалил некоторые необходимые операторы, чтобы избежать беспорядка):
BufferedReader reader = null;
...
String line = reader.readLine().replaceAll("[\\x00-\\x1F]", "");
В этом примере я удаляю (т.е. заменяю пустой строкой) непечатные символы в диапазоне от 0x00 до 0x1F включительно. Вы можете изменить второй аргумент в методе #replaceAll (), чтобы заменить символы на строку, которую требует ваше приложение.