- PR -

xml文書構文解析時のエラーについて

1
投稿者投稿内容
トラジャ
ベテラン
会議室デビュー日: 2002/12/05
投稿数: 75
投稿日時: 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をブラウザに出力してみたのですが、問題なくブラウザでは表示できました。

このエラーを回避する方法はあるのでしょうか。

よろしくお願いいたします。
山本 裕介
ぬし
会議室デビュー日: 2003/05/22
投稿数: 2415
お住まい・勤務地: 恵比寿
投稿日時: 2007-02-16 00:06
162行目の100桁目にはどんな文字があるんでしょう?
その文字を消すとエラーもでなくなりますか?
山本 裕介
ぬし
会議室デビュー日: 2003/05/22
投稿数: 2415
お住まい・勤務地: 恵比寿
投稿日時: 2007-02-16 00:08
調べると同じような事例が色々出てきますね。
どれか参考になるかもしれません。
ほげお
会議室デビュー日: 2006/10/13
投稿数: 7
投稿日時: 2007-03-19 22:36
データに制御文字が入っていませんか?
IIJIMAS
ベテラン
会議室デビュー日: 2006/12/06
投稿数: 77
投稿日時: 2007-03-20 18:17
そのデータをXMLファイルに保存してバイナリエディタで開くと最初に
EF BB BFまたはEF BF BE
がありませんか、もしあればこれを消してみて同じことをやるとどうでしょうか。


[ メッセージ編集済み 編集者: IIJIMAS 編集日時 2007-03-20 18:19 ]
ことぶきじーさん
会議室デビュー日: 2003/10/07
投稿数: 7
お住まい・勤務地: 東京23区内
投稿日時: 2007-03-23 09:25
制御文字の説に一票です。
昔、同じ現象に遭遇しました。
「垂直タブ」なんかが含まれていないでしょうか?

テキストエディタやブラウザなどではエラーにならずにファイルを開けてしまうのでわかりづらいのですが、Parseでは垂直タブなどある種の制御文字(XMLでは許されない文字)が含まれていると、Parseに失敗します。

では、なぜ、ブラウザで表示できてしまうのか・・・それははっきりとはわかりません。
ブラウザによって挙動も違ったような違わなかったような・・・
たとえば、IEではエラーが無視されるけど、Firefoxではちゃんとエラーになる、とか。

間違っていたら、申し訳ない。
1

スキルアップ/キャリアアップ(JOB@IT)