JAXBで、XMLデータを検証する
問題点
ネットでは、クラスJAXBContext のメソッドcreateValidator()で、検証するサイトが多いが、 現在(2009/02/02)では、createValidator()が非推奨なっており、コンパイルすらできないので、 SAXを用いた別の方法を記す
解決方法
http://e-class.center.yuge.ac.jp/jdk_docs/ja/api/javax/xml/bind/Unmarshaller.html#setSchema%28javax.xml.validation.Schema%29より抜粋
setSchema このメソッドは、推奨されなくなった setValidating(boolean) API に置き換わるものです。
サンプル
import javax.xml.XMLConstants; import javax.xml.validation.Schema; import javax.xml.validation.SchemaFactory; ・・・ //Unmarsallerオブジェクトの取得 Unmarshaller unmarshaller = context.createUnmarshaller(); //スキーマ・ファクトリー作成 SchemaFactory scf = SchemaFactory.newInstance(XMLConstants.W3C_XML_SCHEMA_NS_URI); //スキーマを作成 URL urlOfXmlSchma = this.getClass().getClassLoader().getResource(XML_SCHEMA_FILE_NAME); Schema schema = scf.newSchema(new File(urlOfXmlSchma.getPath())); //setSchema()に、スキーマを設定する 事で、XMLデータの正当性をチェックが可能になる unmarshaller.setSchema(schema); ・・・