Ошибка о недопустимых символах 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.