9

XMLスキーマ(foo.xsd)xjcを作成し、JAXBのバインディングクラスを作成するために使用しました。ルート要素がであり、複合型であるcollectionN個のオブジェクトを記述しているとしましょう。document

大きなXMLファイルを書き出す予定なので、Staxを使用してcollectionルート要素を書き出し、JAXBを使用して。を使用してドキュメントサブツリーをマーシャリングしますMarshaller.marshal(JAXBElement, XMLEventWriter)。これは、jaxbの非公式ユーザーガイドで推奨されているアプローチです。

私の質問は、マーシャリング中にXMLを検証するにはどうすればよいですか?スキーマをJAXBマーシャラーに(を使用してMarshaller.setSchema())バインドすると、サブツリーのみをマーシャリングしているため、検証エラーが発生します(ルート要素が表示されないという不満がありcollectionます)。本当にやりたいのは、スキーマをにバインドすることだと思います。またはそのStax XMLEventWriterようなもの。

この全体的なアプローチに関するコメントは役に立ちます。基本的に、メモリを使い果たすことなく大きなXMLドキュメントをマーシャリングおよびアンマーシャリングできるようにしたいJAXBので、これを行うためのより良い方法がある場合はお知らせください。

4

2 に答える 2

3

一部のStax実装は、出力を検証できるようです。同様の質問に対する次の回答を参照してください。

WoodstoxでStax2を使用する

于 2010-03-20T23:02:04.737 に答える