web-dev-qa-db-ja.com

Java=の無効なXML文字に関するエラー

Javaでxmlファイルを解析すると、エラーが発生します:

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

XmlはWebサービスから取得されます。

問題は、Webサービスがローカルホスト(windows + Tomcat)で実行されている場合にのみエラーが発生し、Webサービスがオンライン(linux + Tomcat)の場合には発生しないことです。

無効な文字を置き換えるにはどうすればよいですか?ありがとう。

17
Giancarlo

このコードで修正:

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

Unicode文字0x0NULLを表します。これは、プルしているデータのどこかにNULLが含まれていることを意味します(XMLでは許可されていないため、エラーが発生します)。

最初にNULLの原因を突き止めてください。

また、WebServiceとどのようにやり取りしていますか? Axisを使用している場合は、WSDLにデータの入出力用に指定されたエンコードが含まれていることを確認してください。

15
Buhake Sindi

これはエンコーディングの問題です。入力ストリームをUTF8として読み取るか、そうでないか、またはその逆です。

コンテンツを読み取るときは、エンコードを明示的に指定する必要があります。例えば。経由して

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

別の問題は、Tomcatである可能性があります。 server.xmlファイルのTomcatのコネクタ設定にURIEncoding = "UTF-8"を追加してみてください。なぜなら:

JSP仕様では、JSPページのページエンコーディングが明示的に宣言されていない場合は、ISO-8859-1を使用する必要がある(!).

here から取得。

4
Karussell