Ошибка о недопустимых символах XML на Java

При парсинге XML-файла на Java я получаю ошибку:

An invalid XML character (Unicode: 0x0) was found in the element content of the document.

xml прибывает из веб-сервиса.

Проблема состоит в том, что я получаю ошибку только, когда веб-сервис работает на localhost (windows+tomcat), но не, когда веб-сервис онлайн (linux+tomcat).

Как я могу заменить недопустимый символ?? Спасибо.

16
задан Giancarlo 2 March 2010 в 10:06
поделиться

4 ответа

исправлено с помощью этого кода:

String cleanXMLString = null;
Pattern pattern = null;
Matcher matcher = null;
pattern = Pattern.compile("[\\000]*");
matcher = pattern.matcher(dirtyXMLString);
if (matcher.find()) {
   cleanXMLString = matcher.replaceAll("");
}
7
ответ дан 30 November 2019 в 21:45
поделиться

Символ Unicode 0x0 представляет NULL, что означает, что данные, которые вы извлекаете, содержат где-то NULL (что не допускается в XML и отсюда ваша ошибка).

Убедитесь, что вы выяснили причину появления NULL в первую очередь.

Кроме того, как вы взаимодействуете с WebService? Если вы используете Axis, убедитесь, что в WSDL указана кодировка для ввода и вывода данных.

14
ответ дан 30 November 2019 в 21:45
поделиться

Это проблема кодировки. Либо вы читаете входной поток как UTF8, а это не так, либо наоборот.

Вы должны явно указать кодировку при чтении содержимого. Например, через

new InputStreamReader(getInputStream(), "UTF-8")

Другая проблема может быть связана с tomcat. Попробуйте добавить URIEncoding="UTF-8" в настройках коннектора вашего tomcat в файле server.xml. Потому что:

Оказалось, что в спецификации JSP сказано, что если кодировка страниц JSP не объявлена явно, то следует использовать ISO-8859-1 (!).

Взято из здесь.

4
ответ дан 30 November 2019 в 21:45
поделиться

Немного поискав вокруг, выяснилось, что 0x0 - это нулевой символ, у кого-то еще была такая же проблема с XML и нулевыми символами здесь http://forums.sun.com/thread.jspa?threadID=579849. Не уверен, как вы разбираете XML, но если вы сначала получите его как строку, то здесь http://forums.sun.com/thread.jspa?threadID=628189 можно обсудить, как заменить нулевой символ.

-1
ответ дан 30 November 2019 в 21:45
поделиться
Другие вопросы по тегам:

Похожие вопросы: