有关Java上无效XML字符的错误

在Java上解析xml文件我得到错误:

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

xml来自web服务。

问题是我只在webservice在localhost(windows + tomcat)上运行时才会收到错误,但是当webservice在线时(linux + tomcat)则不会。

我怎样才能替换无效的char? 谢谢。

Unicode字符0x0表示NULL意味着您正在提取的数据在某处包含NULL(在XML中不允许这样,因此您的错误)。

确保首先找出导致NULL的原因。

另外,您如何与WebService进行交互? 如果您正在使用Axis,请确保WSDL具有为数据输入和输出指定的某些编码。

使用此代码修复:

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

这是一个编码问题。 您可以将输入流读作UTF8,而不是或者相反。

您应该在阅读内容时明确指定编码。 例如通过

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

另一个问题可能是tomcat。 尝试在server.xml文件的tomcat连接器设置中添加URIEncoding =“UTF-8”。 因为:

事实certificate,JSP规范说如果没有明确声明JSP页面的页面编码,那么应该使用ISO-8859-1(!)。

从这里开始 。

有点环顾四周,发现0x0是一个空字符,其他人在这里遇到了与XML和空字符相同的问题http://forums.sun.com/thread.jspa?threadID=579849 。 不确定你是如何解析XML的,但是如果你首先将它作为一个字符串,那么在这里有一些关于如何替换null的讨论http://forums.sun.com/thread.jspa?threadID=628189 。