
お世話になります。
<?xml version="1.0"?>
<!DOCTYPE A [
<!ELEMENT A (B)>
]>
<A>
</A>
上記のXMLをSAXにてparseをかけると多分「定義とちがうじゃん!」というような趣旨のエラーがでるとおもっていたのですが、普通に処理されてしまいました。
DTDのチェックってどうやってやるのでしょうか?
SAXParserFactory factory = SAXParserFactory.newInstance();
factory.setValidating(true);
SAXParser parser = factory.newSAXParser();
parser.parse(xmlFile, new DefaultHandler()を拡張したクラス);
このようなかんじでやっているのですが、
これがまちがえていますか?
SAXのバージョンとかも関係するのかもしれないのですが、
これ使ってともらったやつなのでどのように調べていいのかわかりません。
以上よろしくお願い致します。
No.1ベストアンサー
- 回答日時:
DefaultHandlerはErrorHandlerを実装していますが、
この中のerror()メソッドはオーバーライドしていますか?
妥当でない場合にはこのerror()メソッドが呼び出されるようになっています。
(データとしては致命的ではないのでparse()メソッドに対する例外は発生しません)
DeafaultHandlerを拡張したクラスに
public void error(SAXParseException exp){
System.out.println("妥当でないかも");
}
の記述を追加してみてください。
詳しくはAPIドキュメントのorg.xml.sax.ErrorHandlerを確認してみてください。
早速のご解答ありがとうございます。
アドバイスを参考にやってみたところできました。
自分としてはDTDのそぐわないとなにかすごい例外がでて
処理がストップするものだと思っていました。
仕様としてこうなっているのですね。
APIもこういうところまで読まないとだめですね。。。
ありがとう御座いました。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
String.containsの反対機能はあ...
-
SAXでXMLファイルを読むときに...
-
Javaの問題なんですが、練習14-...
-
contextってなんですか?
-
djUnit コンストラクタがpriva...
-
CSVから読み込んだデータの保持...
-
getBunds()の使い方
-
C# 点の描き方をおしえてくだ...
-
abstract と static を一緒に付...
-
JAVAコンパイルができない。
-
レコード件数の表示
-
C# asp.net HTMLタグのエスケ...
-
JavaからCへ
-
中学のクラス数
-
「タイプ初期化子が例外をスロ...
-
ヒグマを撃退
-
0歳児の指しゃぶりに関して
-
複数のクラスで共通した関数を...
-
Excel : OpenTextメソッドが正...
-
private static という変数の修飾
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
レコード件数の表示
-
Java初級 引数に適用できません
-
String.containsの反対機能はあ...
-
StringBufferからStringへキャ...
-
abstract と static を一緒に付...
-
return new使用時
-
なぜprotected overrideなのか
-
C言語での文字列より値を抜き出す
-
C# 点の描き方をおしえてくだ...
-
スーパークラスからサブクラス...
-
説明文書でのメソッド・変数の...
-
別クラスのmainメソッドの実行
-
Strutsでチェックボックスの値...
-
CSVから読み込んだデータの保持...
-
Javaの関数名が長い?
-
java ジェネリックスに関して
-
Java初心者です、エラーの意味...
-
シェルスクリプトからのJavaメ...
-
C# でメソッドに送られてきたOb...
-
Java初心者です。例外のキャッ...
おすすめ情報