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

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

PHPz
PHPz転載
2024-02-06 09:09:09822ブラウズ
質問の内容

私は 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 までご連絡ください。