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

Gia*_*rlo 16 java xml unicode parsing

在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?谢谢.

Buh*_*ndi 14

Unicode字符0x0表示NULL您所提取的数据在某处包含NULL(这在XML中是不允许的,因此您的错误).

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

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

  • 常识性方法+1.盲目地修复这样的错误而不关心它来自何处并不是一个好主意. (2认同)

Gia*_*rlo 7

使用此代码修复:

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

  • +1,但可以通过`dirtyXMLString.replaceAll("[\\ 000]*","")`来简化. (3认同)
  • 也可以通过将`*`更改为`+`:`dirtyXMLString.replaceAll("[\\ 000] +","")来加快速度. (2认同)