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

Анализ xml файла на Java Я получаю сообщение об ошибке:

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

xml происходит из веб-службы.

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

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

Ответ 1

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

String cleanXMLString = null;
Pattern pattern = null;
Matcher matcher = null;
pattern = Pattern.compile("[\\000]*");
matcher = pattern.matcher(dirtyXMLString);
if (matcher.find()) {
   cleanXMLString = matcher.replaceAll("");
}

Ответ 2

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

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

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

Ответ 3

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

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

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

Еще одной проблемой может быть tomcat. Попытайтесь добавить URIEncoding = "UTF-8" в свои настройки коннектора tomcats в файле server.xml. Потому что:

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

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

Ответ 4

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