目次へ

2005.10.14 株式会社四次元データ 小野彩子

10.4 XML文書の検証を行う

 インスタンスを生成するときUnmarshallerにXML文書を渡します。XML文書がスキーマに沿った文書か検証するためには、setValidatingメソッドを使用します。

       unmarshaller.setValidating(true);

setValidatingメソッドで引数にtrueを指定した場合、unmarshalメソッド実行時に、XML文書がスキーマに沿っているか検証を行います。XML文書がスキーマに沿っていない場合は、JAXBExceptionをスローします。整合性の取れたインスタンスツリーを生成するには、XML文書は妥当であることが望ましいです。しかし、検証を実行した場合プログラムのパフォーマンスは低下しますので、検証を実行するかどうかは、充分注意して設定しましょう。デフォルトでは、Unmarshallerは妥当性の検証は行いません。

(実習課題1)

商品情報を表すXML文書を読み込み、価格が最も高い商品の情報を表示するコンソールプログラムを作成しなさい。例えば、以下のようなXML文書があったとします。

product.xml
<?xml version="1.0"?>
<products>
  <product>
    <name>ゼロからはじめるJava</name>
    <price>1905</price>
  </product>
  <product>
    <name>ゼロからはじめるJ2EE</name>
    <price>2095</price>
  </product>
</products>

プログラムを実行すると以下のように表示されます。

$java MostExpensiveProduct product.xml

product.xmlの商品の中で最も高価な商品は、「ゼロからはじめるJ2EE」、価格は2095円です。

前章の実習課題で作成したスキーマやJAXBにより自動生成したクラス(Products、Product...)を使用しなさい。また、XML文書を読み込む場合には妥当性を検証し、妥当でない場合はエラーメッセージを出力しなさい。

解答例はこちら

↑このページの先頭へ

こちらもチェック!

PR
  • XMLDB.jp