21

JAXBを使用してXMLファイルをオブジェクトツリーにアンマーシャリングしています。ルートオブジェクトはnullではありませんが、XMLファイルにデータがある場合でも、そのメンバーはすべてnullです。私のオブジェクトクラスは、wsdlsからAxis2を使用して生成されました。ObjectFactoryクラス、jaxb.in​​dexクラス、package.infoアノテーションなどがあります。

私の問題はこの議論と同じです:http://old.nabble.com/AXIS2,-JAXB---Unmarshalling-td26847419.html

何よりもまず、データを適切に入力する方法はありますか?

そうでない場合は、同じことを実行するが、互いにうまく機能するAxis2またはJAXBのいずれかの優れた代替ライブラリがありますか?

4

5 に答える 5

58

JAXB はデフォルトでエラーを黙って無視します。これがデフォルト構成である理由がわかりません。このコードを追加して、何か問題が発生した場合に例外をスローしてみてください。

unmarshaller.setEventHandler(
    new ValidationEventHandler() {
        @Override
        public boolean handleEvent(ValidationEvent event ) {
            throw new RuntimeException(event.getMessage(),
                                       event.getLinkedException());
        }
});
于 2010-07-06T22:06:02.317 に答える
1

最近、同様の問題が発生し、以下のように修正できました。

1) xsd ファイルを修正します。私の場合、xsd のすべての複雑な要素が type 属性で宣言するのではなく、ref 属性を使用して対応する型を参照するようにしました。

Eclipse で XML スキーマ ファイル オプションから xml ファイルを作成して、xsd が適切かどうかを確認しました。

修正前は、xml ファイルのルート要素は空でした。xsd を修正した後、いくつかのサンプル値を使用して xml が適切に作成されました。

2) クリーンアップと再構築 クラスを再生成する前に、クリーンアップが必須です。

于 2011-06-08T10:16:32.423 に答える
0

Axis2 が Rampart (SOAP ボディ暗号化) および JAXB と一緒に使用されている場合、この問題は常に発生します。

詳しくはこちら:AXIS2-4981

于 2011-03-29T12:22:47.523 に答える
0

package-info.java ファイルをコンパイルする必要があります。Eclipse は、すべての .java ファイルを見つけてコンパイルする必要があります。コマンドラインからコンパイルし、javac に依存関係を検索させる場合、それは見つかりません。その後、実行すると、空のオブジェクトが取得されます。少なくともそのファイルをどこかにインポートしないという JAXB のバグのようです。エラーは、そのファイルをコンパイルできる可能性があることを示しているはずです。

于 2012-06-19T17:56:10.427 に答える
0

Java コードの作成に使用された xsd ファイルに到達不能な URL への参照が含まれていたときに、この問題に遭遇しました。

幸いなことに、これらの参照はすべてファイルに表示されていたため、それらを削除したタスクの後にタスクpackage-info.javaを追加する必要がありました。antRunxjc

于 2019-07-10T13:24:56.257 に答える