- - PR -
xml文書構文解析時のエラーについて
1
投稿者 | 投稿内容 |
---|---|
|
投稿日時: 2007-02-15 23:07
みなさん、お世話になります。
Webサービスを利用したアプリケーションを作成しているのですが、以下のようなエラーが時々でてxml情報を取得できません。 Fatal Error : Fatal Error : 162行目の100桁目 org.xml.sax.SAXParseException: An invalid XML character (Unicode: 0x0) was found in the element content of the document. 以下のような手順でxml情報を取得しています。 String uri = "xml情報取得アドレス"; // ドキュメントビルダーファクトリを生成 DocumentBuilderFactory dbfactory = DocumentBuilderFactory.newInstance(); // ドキュメントビルダーを生成 DocumentBuilder builder = dbfactory.newDocumentBuilder(); builder.setErrorHandler(new MyErrorHandler()); // パースを実行してDocumentオブジェクトを取得 Document doc = builder.parse(uri); // ルート要素を取得 Element root = doc.getDocumentElement(); *エラーは以下の行ででます。 Document doc = builder.parse(uri); エラーの内容は、「ドキュメント中にユニコードでない文字があるため、解析不能」ということだと思い、URIを直うちして生のxmlをブラウザに出力してみたのですが、問題なくブラウザでは表示できました。 このエラーを回避する方法はあるのでしょうか。 よろしくお願いいたします。 |
|
投稿日時: 2007-02-16 00:06
162行目の100桁目にはどんな文字があるんでしょう?
その文字を消すとエラーもでなくなりますか? |
|
投稿日時: 2007-02-16 00:08
調べると同じような事例が色々出てきますね。
どれか参考になるかもしれません。 |
|
投稿日時: 2007-03-19 22:36
データに制御文字が入っていませんか?
|
|
投稿日時: 2007-03-20 18:17
そのデータをXMLファイルに保存してバイナリエディタで開くと最初に
EF BB BFまたはEF BF BE がありませんか、もしあればこれを消してみて同じことをやるとどうでしょうか。 [ メッセージ編集済み 編集者: IIJIMAS 編集日時 2007-03-20 18:19 ] |
|
投稿日時: 2007-03-23 09:25
制御文字の説に一票です。
昔、同じ現象に遭遇しました。 「垂直タブ」なんかが含まれていないでしょうか? テキストエディタやブラウザなどではエラーにならずにファイルを開けてしまうのでわかりづらいのですが、Parseでは垂直タブなどある種の制御文字(XMLでは許されない文字)が含まれていると、Parseに失敗します。 では、なぜ、ブラウザで表示できてしまうのか・・・それははっきりとはわかりません。 ブラウザによって挙動も違ったような違わなかったような・・・ たとえば、IEではエラーが無視されるけど、Firefoxではちゃんとエラーになる、とか。 間違っていたら、申し訳ない。 |
1