Java&XMLの初心者です。
用語の使い方など間違っているかもしれませんが、
よろしくお願いします。
XMLパーサーにxercesを利用しています。
以下のようなXMLをがあったときに、
<?xml version="1.0"?>
<!DOCTYPE a SYSTEM "a.dtd">
<a>
<b>1</b>
<b>1</b>
</a>
以下のコードを実行すると、
SAXParserFactory f = SAXParserFactory.newInstance();
f.setValidating(true);
SAXParser p = f.newSAXParser();
p.parse((InputSource)xml, handler);
カレントディレクトリにあるa.dtdとの妥当性をチェックしますが、
これをファイルは無視し、指定した文字列とチェックをさせるなどと
いうことは可能でしょうか?
No.2ベストアンサー
- 回答日時:
> 「a.dtdというファイルからではなく、文字列としてDTDの定義を
> 保持しておき、文字列とXMLデータとの妥当性をチェックする」
質問は、ばっちり理解しましたが、回答できるだけの力量がありません (^^;
「何か知っていることがあれば」とのことなので、できる範囲で。
参考URLのひとつめ apache プロジェクトのマニュアルから SAXParser のページを見ると
AbstractSAXParser クラスの startDTD() というメソッドがオーバーライドされて
います。
こいつには XMLLocator というのを受け取ります(参考URLのふたつめ)。
それを適切に置き換えれば、何か出来そうな気が…
後、DTDGrammar というクラスもちょっと気になります。
# と言いつつ、マニュアルをあさってみましたが、いまいち有効な手段が見当たりません m(_ _)m
参考URL:http://xml.apache.org/xerces2-j/javadocs/xerces2 …
回答ありがとうございます。
いろいろ調べましたが、
「a.dtdというファイルからではなく、文字列としてDTDの定義を
保持しておき、文字列とXMLデータとの妥当性をチェックする」
という方法は無理なような気がしてきました。
読み込んだXMLファイルの<!DOCTYPE>を保持しているDTDに変えて、
parseすれば妥当性のチェックはできると思うので、そうします。
ありがとうございました。
No.1
- 回答日時:
SAX は使ったことは無いんですが、マニュアルから分かる範囲で。
> カレントディレクトリにあるa.dtdとの妥当性をチェックしますが、
> これをファイルは無視し、
これは、SAXParseFactory に対して setValidating(true) をしなければ
良いんですよね。念の為、ということであれば setValidating(false) と
しておけば良さそう。
> 指定した文字列とチェックをさせる
については、それぞれの Handler でチェック込みの処理をすれば良いだけ
のことです。
この回答への補足
回答ありがとうございます。
私の質問の仕方が悪かった&自分の理解が不十分でした。
すみません。m(__)m
補足します。
Javaで以下の処理をさせたいと考えています。
「a.dtdというファイルからではなく、文字列としてDTDの定義を
保持しておき、文字列とXMLデータとの妥当性をチェックする」
parseする必要はなく、あくまでも"妥当性のチェック"がやりたいのです。
もし、何か知っていることがあれば回答をお願いします。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
関連するカテゴリからQ&Aを探す
おすすめ情報
- ・漫画をレンタルでお得に読める!
- ・人生のプチ美学を教えてください!!
- ・10秒目をつむったら…
- ・あなたの習慣について教えてください!!
- ・牛、豚、鶏、どれか一つ食べられなくなるとしたら?
- ・【大喜利】【投稿~9/18】 おとぎ話『桃太郎』の知られざるエピソード
- ・街中で見かけて「グッときた人」の思い出
- ・「一気に最後まで読んだ」本、教えて下さい!
- ・幼稚園時代「何組」でしたか?
- ・激凹みから立ち直る方法
- ・1つだけ過去を変えられるとしたら?
- ・【あるあるbot連動企画】あるあるbotに投稿したけど採用されなかったあるある募集
- ・【あるあるbot連動企画】フォロワー20万人のアカウントであなたのあるあるを披露してみませんか?
- ・映画のエンドロール観る派?観ない派?
- ・海外旅行から帰ってきたら、まず何を食べる?
- ・誕生日にもらった意外なもの
- ・天使と悪魔選手権
- ・ちょっと先の未来クイズ第2問
- ・【大喜利】【投稿~9/7】 ロボットの住む世界で流行ってる罰ゲームとは?
- ・推しミネラルウォーターはありますか?
- ・都道府県穴埋めゲーム
- ・この人頭いいなと思ったエピソード
- ・準・究極の選択
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
バッチファイルでテキストファ...
-
eclipseへのxmlファイル追加
-
CPUの考え方を教えてください ...
-
XMLで要素が記述された順番に意...
-
東芝のDynabookなのですがアン...
-
VBSでxmlの値を書き換えたい
-
XMLからデータを取得
-
4バイトを10進数に変換する方法
-
xmlファイルが上手にHTMLに変換...
-
同じタグ名の項目取得
-
Visual Basic .NET の識別子は...
-
ルート要素ノードが2個ある場合?
-
XML、XSLTの適応エラー(IEから...
-
VB.NETで最後フォのフォ...
-
TreeViewに重複する値をセット
-
VBでXMLを扱えるコントロールは...
-
SNMP リンクダウンとノードダ...
-
XMLウインドウ表示時のエラー
-
MSXMLを使ってノードを削除した...
-
TOMCAT起動エラー
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
バッチファイルでテキストファ...
-
ExcelVBAで書き出した文字が化ける
-
XMLファイルの作り方がわかりま...
-
DOSコマンドラインからxmlファ...
-
eclipseへのxmlファイル追加
-
VBSでXMLを読込、検索結果をテ...
-
UTF-8でエンコーディングとはど...
-
VBAでxmlファイルの置換をしたい
-
【アプリ開発】日本語を含むXML...
-
jspでXMLファイルの読み書き...
-
XMLデータを整形して、ブラウザ...
-
GoogleマップでKMLが読み込めない
-
Web サイトにあるxmlファイルを...
-
質問
-
JavaでXMLのNodeツリーをファイ...
-
C#で使用中のファイルに別のフ...
-
ビデオハードウェアエラー Live...
-
質問
-
NEXUS7でSecret No5の使い方
-
XMLファイルのattribute値を取...
おすすめ情報