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)の場合には発生しないことです。
無効な文字を置き換えるにはどうすればよいですか?ありがとう。
このコードで修正:
String cleanXMLString = null;
Pattern pattern = null;
Matcher matcher = null;
pattern = Pattern.compile("[\\000]*");
matcher = pattern.matcher(dirtyXMLString);
if (matcher.find()) {
cleanXMLString = matcher.replaceAll("");
}
Unicode文字0x0
はNULL
を表します。これは、プルしているデータのどこかにNULLが含まれていることを意味します(XMLでは許可されていないため、エラーが発生します)。
最初にNULLの原因を突き止めてください。
また、WebServiceとどのようにやり取りしていますか? Axisを使用している場合は、WSDLにデータの入出力用に指定されたエンコードが含まれていることを確認してください。
これはエンコーディングの問題です。入力ストリームをUTF8として読み取るか、そうでないか、またはその逆です。
コンテンツを読み取るときは、エンコードを明示的に指定する必要があります。例えば。経由して
new InputStreamReader(getInputStream(), "UTF-8")
別の問題は、Tomcatである可能性があります。 server.xmlファイルのTomcatのコネクタ設定にURIEncoding = "UTF-8"を追加してみてください。なぜなら:
JSP仕様では、JSPページのページエンコーディングが明示的に宣言されていない場合は、ISO-8859-1を使用する必要がある(!).
here から取得。