XMLドキュメントをマーシャリングするためにJAXBやスタックスを使用して検証
質問
私は、XMLスキーマ(foo.xsd)を作成し、JAXBのための私のバインディングのクラスを作成するためにxjc
を使用しています。のは、ルート要素がcollection
であると私は複雑な型であるNのdocument
オブジェクトを、書いて言ってみましょう。
私は大規模なXMLファイルを書き出すために計画しているので、私はcollection
ルート要素を書き出すためにスタックスを使用していますし、JAXBはMarshaller.marshal(JAXBElement, XMLEventWriter)
を使用して、ドキュメントのサブツリーをマーシャリングします。これは JAXBの非公式ユーザーガイドのが推奨するアプローチです。
私の質問は、それが整列化されている間、私はXMLを検証する方法、ありますか?私は(Marshaller.setSchema()
を使用して)JAXBのマーシャラーにスキーマをバインドする場合、私は唯一の(「collection
のルート要素を見ていないことを訴えています)サブツリーをマーシャリングしていますので、私は、検証エラーを取得します。私は、私が本当にやりたいことと仮定的に結合されますStax XMLEventWriter
またはそのような何かにスキーマます。
この全体的なアプローチ上の任意のコメントが参考になります。基本的に私は、これは私に知らせて行うには良い方法がありますので、もし、メモリが不足することなく、大規模なXML文書をマーシャリングおよびアンマーシャリングするJAXB
を使用することができるようにしたい。
解決
いくつかのスタックスの実装は、出力を検証することができるように見えます。同様の質問には、次の回答を参照してください。
<のhref = "https://stackoverflow.com/questions/15732/whats-the-best-way-to-validate-an-xml-file-against-an-xsd-file/690450#690450" > Woodstox のでStax2を使用して