XMLスキーマ(foo.xsd)xjc
を作成し、JAXBのバインディングクラスを作成するために使用しました。ルート要素がであり、複合型であるcollection
N個のオブジェクトを記述しているとしましょう。document
大きなXMLファイルを書き出す予定なので、Staxを使用してcollection
ルート要素を書き出し、JAXBを使用して。を使用してドキュメントサブツリーをマーシャリングしますMarshaller.marshal(JAXBElement, XMLEventWriter)
。これは、jaxbの非公式ユーザーガイドで推奨されているアプローチです。
私の質問は、マーシャリング中にXMLを検証するにはどうすればよいですか?スキーマをJAXBマーシャラーに(を使用してMarshaller.setSchema()
)バインドすると、サブツリーのみをマーシャリングしているため、検証エラーが発生します(ルート要素が表示されないという不満がありcollection
ます)。本当にやりたいのは、スキーマをにバインドすることだと思います。またはそのStax XMLEventWriter
ようなもの。
この全体的なアプローチに関するコメントは役に立ちます。基本的に、メモリを使い果たすことなく大きなXMLドキュメントをマーシャリングおよびアンマーシャリングできるようにしたいJAXB
ので、これを行うためのより良い方法がある場合はお知らせください。