1

JAXB 2.1 RI を使用して、要素の値が固定された XML を生成できませんでした。xjc を使用して XML バインド コードを生成し、結果をマーシャリングします。

<xs:attribute fixed='something'/>および JAXB カスタマイズ プロパティを使用する属性に対して機能しますfixedAttributeAsConstantProperty。要素については、同じことを行う方法はないと考えました。それともありますか?

<xs:element default='something'/>回避策として、に変換されるwhichを使用しまし@XmlElement(default='something')た。defaultこれで、マーシャラーにパラメーターを解釈して、対応するコンテンツを持つ要素を生成するように何らかの方法で伝えることができると思います<element>something</element>.

標準および RI ベンダー固有のマーシャラー構成プロパティーを調べましたが、有用なものは見つかりませんでした。似たようなことをする xjc プラグインがあるようですが [1]、そうするための標準的な JAXB の方法がないとしたら、私はちょっと驚きます。

どんなポインタでも大歓迎です、ありがとう。

[1] http://fisheye5.cenqua.com/browse/~raw,r=1.5/jaxb2-commons/www/default-value/index.html

4

2 に答える 2

2

XML スキーマ仕様は、アンマーシャリングのみを扱います。つまり、ソース XML 表現の検証後の情報セットを決定します。

JAXB は、デフォルトのサポート、つまりほとんどの読み取りに対して、これを反映しているように見えます。たとえば、デフォルト属性のサポートは、デフォルトの書き込みには拡張されず、読み取り (または getter を使用した Java からのアクセス) にのみ拡張されます。

私が見ているように、解決策の最善の策は、フィールドをfinalにしてセッターを削除することにより、デフォルト値プラグインを拡張して固定要素も処理することです。

プラグインのコードは非常に簡単です。

于 2011-01-07T23:14:02.633 に答える
0

定数を生成するために使用できる Maven プラグインがあります: https://github.com/fbdo/jaxb2-fixed-value

于 2015-02-05T09:05:22.490 に答える