私は 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 を使用してクラスを生成するときに、機能させるために設定する必要がある追加のフラグはありますか?
これが
parsexml の本体メソッドです
リーリー
src/main/resources/xslt/vast_4.2.xslt は:
リーリー
以上が名前空間がない場合、型の宣言による jaxb のアンマーシャリングが機能しないの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。