0

JiBXを使用して、外部ソースから提供されたXSDに基づいてXMLをアンマーシャリングしています。残念ながら、「必須」フィールドの一部はXMLに常に存在するとは限らないため、JiBXは「org.jibx.runtime.JiBXException:必須要素がありません」をスローします。

XSDファイルを編集して、「必須」フィールドをオプションに変更できることはわかっていますが、これらのファイルは定期的に更新されるため、これは行いません。JiBXには、実行時に欠落している要素を無視するように(コンパイル/バインド時または実行時に)変更できる設定がありますか?たとえば、欠落している要素に対応するフィールドの値をnullに設定しますか?

編集:変更すなわち->例:)

4

1 に答える 1

0

JD、
別のスキーマ定義のJiBXバインディングを作成する最も簡単な方法は、スキーマ定義を目的のスキーマに変更することです。
これは、元のスキーマ定義でxml変換を実行して新しいスキーマを作成することにより、簡単かつクリーンに実行できます。
JiBXを実行する前にスキーマを変更するMavenプロジェクトのこの例を見てください:https
://github.com/jibx/schema-library/blob/master/net.webservicex/net.webservicex.currencyconvertor/pom.xml I xml変換言語は苦痛であることを知っていますが、これにより、将来のスキーマ変更で発生する問題が解決されます。xsltコマンドは次のようになります。
<xsl:template match = "// xs:attributeGroup [@ name ='FlifoLegAttributes']">
<xs:attributeGroup name = "FlifoLegAttributes">
<xs:attribute name = "AirRowType" type = "OTA_CodeType" use = " optional ">
</ xs:attribute>
</ xs:attributeGroup>
</ xsl:template>

これがお役に立てば幸いです。
ドン

于 2012-08-28T20:44:54.950 に答える