有关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 。