2

JAXB を使用して、xml-soap 文字列を Java オブジェクトに非整列化する必要があります。XML には、属性が入力された空のタグが多数含まれています。たとえば、メッセージ内のほとんどの情報は次のように中継されます。

<ID code="123" codeSystem="12.12.12"/>

属性に興味があります。

問題: アンマーシャリング後にオブジェクトを検査すると、すべての空のタグ (上記のような) が Java オブジェクトで表現されていません (たとえば、null です)。塗りつぶされたタグのみ (たとえば、123 が Java オブジェクトに追加されました。おそらく、この動作は xml 標準に準拠していますが、私はまだ属性に興味があります。属性を取得する方法があるかどうか教えてもらえますか??

考えられる回避策: バインディング ファイルを使用してアダプタにバインドすることにより、各要素が null の場合にデフォルト値 ("") を指定します。しかし、単純型に対してのみこれを行うことに成功しました。

使用されているバージョン: Java 1.6 で jaxb 実装を使用しています。

どうもありがとう。

ワイブランド。

4

2 に答える 2

1

XML 属性にはデフォルト値がないため、afterUnmarshal メソッドに初期化コードを実装します。そこで、関心のあるすべての属性を確認し、それらを有効な非 null 値に設定できます。

afterUnmarshal の使用方法の詳細については、次を参照してください:オブジェクトへの XML ファイルのアンマーシャリングが完了した後、JAXB にメソッドを呼び出すにはどうすればよいですか?

于 2011-07-02T17:12:33.453 に答える
1

問題を解決しました。しかし、問題は JAXB ではありませんでした。

私が持っている xml を umarhall に送信するパーティは、要素宣言に「null 名前空間」を入れます。

XML フラグメント:

id 要素の宣言には xmlns="" があります。(これはバグだと思います)、ルートタグには宣言 xmlns:ns3="urn:hl7-org:v3" があります

このため (私が思うに) jaxb unmarshaller は id 要素をメッセージの一部として認識しません。

于 2011-07-05T14:27:40.327 に答える