マーシャリングされたXMLをJAXB 2.0で検証できますか?
-
03-07-2019 - |
質問
JAXBのバージョン2で-バリデータクラスは廃止されたようです-これは、マーシャラーがXMLを自動的に検証していることを意味しますか?もしそうなら、私が形成している誤ったXMLの一部について不平を言っていないようです!マーシャリングされたXMLを検証してXSDスキーマに準拠していることを確認する方法について、誰かアドバイスをいただけますか。
どうもありがとう。
解決
JAXP 1.3スキーマ検証フレームワークの使用により、JAXB 2.0で検証機能が拡張されました。
実行前:
unmarshaller.setValidating(true);
今やらなければならないこと:
SchemaFactory sf = SchemaFactory.newInstance(
javax.xml.XMLConstants.W3C_XML_SCHEMA_NS_URI);
Schema schema = sf.newSchema(new File("myschema.xsd"));
unmarshaller.setSchema(schema);
setSchema
にnullを渡すと、検証が無効になります。
このリファレンスを確認してください。
他のヒント
スキーマに従ってJavaオブジェクトが有効なXMLを生成することを確認する場合は、JAXB-Verificationプロジェクトを参照してください。
https://jaxb-verification.dev.java.net/
これは、XMLスキーマのObjectVerifier実装を生成するxjcへのJAXB RIプラグインです。これにより、XMLを検証するためにJavaオブジェクトをマーシャリングする必要がなくなります。
所属していません StackOverflow