2005.10.14 株式会社四次元データ 小野彩子
XML DOM XSLT 10章 JAXB(2)
- 10.1. JAXBでXML文書よりインスタンスを生成する
- 10.2. JAXBコンテキストとUnmarshaller
- 10.3. 子要素を取得する
- 10.4. XML文書の検証を行う
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文書を読み込む場合には妥当性を検証し、妥当でない場合はエラーメッセージを出力しなさい。