名前空間がない場合、型の宣言による jaxb のアンマーシャリングが機能しない

PHPz
リリース: 2024-02-06 09:09:09
転載
867 人が閲覧しました
質問の内容

私は XML ドキュメントである膨大なドキュメントのパーサーを構築しています。公式の xsd があり、いくつかのバージョンがあります: https://github.com/interactiveadvertisingbureau/vast /ツリー/マスター

受信 XML をアンマーシャリングできる必要があったため、jaxb2-maven-plugin を使用してモデルを生成しました。

名前空間について言及している場合とそうでない場合がある、受信 XML を処理できる必要があります。私の問題は、名前空間がある場合は機能するが、名前空間がない場合は機能しないことです。

https://stackoverflow.com/a/8717287/3067542 および https://docs.oracle.com/javase/6/docs/api/javax/xml/bind/unmarshaller.html#unmarshalbydeclaredtype に従って、私はターゲットのクラスの型がわかっているので、名前空間の有無に関係なく、そのクラスへのアンマーシャリングを強制できるため、回避策があります。

これは私のコードです (github でも入手可能です)

リーリー

テストを実行すると、内部クラスにデータが設定されていないことがわかりました:

###私は何か見落としてますか?

jaxb2-maven-plugin を使用してクラスを生成するときに、機能させるために設定する必要がある追加のフラグはありますか?


正解


この回答は明らかに最適化されていませんが、名前空間および非名前空間 XML のバージョン 4.2 で動作させる方法のヒントが得られます。

これが

parsexml の本体メソッドです リーリー

src/main/resources/xslt/vast_4.2.xslt は: リーリー

この時点では、両方の単体テストがセクション 4.2 に適用されます。

以上が名前空間がない場合、型の宣言による jaxb のアンマーシャリングが機能しないの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

関連ラベル:
ソース:stackoverflow.com
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
最新の問題
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート