- 締切済み
XML ファイル parse 時の例外発生
XML ファイル parse 時の例外発生 Java プログラムにて UTF-8 で書いた XML ファイルを DOM オブジェクトに読み込むときに、CJK Unified Ideograph Extension B などの (UTF-16 にて surrogate pair となるような) 字をコメント内に書くと、例外が発生します。何かよい回避方法は無いでしょうか。 例外は: org.xml.sax.SAXParseException: An invalid XML character (Unicode: 0xd85a) was found in the comment. XML ファイルは encoding="UTF-8" としており、コメント以外のテキストにこれを書く分には、特に問題無く parse できています。 読み取りは DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance(); factory.setValidating(false); factory.setIgnoringComments(true); DocumentBuilder builder = factory.newDocumentBuilder(); Document doc = builder.parse("hoge.xml"); などとしています。JDK のバージョンは 1.6.0_17-b04 on Windows Vista。 当該文字を "" で囲んだり、通るタグ記述の形のままコメント化したりもしましたが、だめでした。 以上、よろしくお願いいたします。
- みんなの回答 (1)
- 専門家の回答
みんなの回答
- SaKaKashi
- ベストアンサー率24% (755/3136)
SAXなら InputSource is = new InputSource(new FileInputStream(DocFile) ); is.setEncoding("UTF-8"); reader.parse(is); これでEncodingが指定可能なので、Encodingを指定して試してみれば。
お礼
いえ、それでは同じ結果になります。 parser は読み取るファイルのエンコーディングが UTF-8 であると、認識はしています。ですので、それを UTF-16 内部表現にした surrogate pair の上位ワードが正しく (エラーメッセージ内に) 表示されています。