1

私のアプリケーションは非常に長い XML 文書を受け取り、それを使用して Java オブジェクトを作成したいと考えています。

ただし、XML には深くネストされた要素がたくさんありますが、私が興味を持っているのはそのうちのほんの一握りです。また、XML から Java への移行のみに関心があります。Java オブジェクトをマーシャリングして XML に戻す機能は必要ありません。

私のアプリケーションの依存関係にはすでに Eclipselink MOXy が含まれているため、可能であれば JAXB を使用したいと考えています。ただし、深くネストされた少数の要素値のみを取得する方法がわかりません。私は@XmlElementWrapper注釈を見て、それを使用して Java クラス フィールドに次のように注釈を付けることを考えました。

...
@XmlElementWrapper(name="LEVEL_1/SUBLEVEL_1/YET_ANOTHER_SUBLEVEL")
@XmlElement(name="STATUS")
private String statusCode;
...

nameただし、その属性が有効かどうかはわかりません。とにかく、そこまでは行きません...コンパイラは@XmlElementWrapper、メンバー変数がコレクション型の場合にのみ使用できると教えてくれます。取得しようとしているフィールドのほとんどは、単一の値です。

@XmlElementWrapper注釈をスキップして、@XmlElement単独で XPath 値を理解できるかどうかを確認してみました。

...
@XmlElement(name="LEVEL_1/SUBLEVEL_1/YET_ANOTHER_SUBLEVEL/STATUS")
private String statusCode;
...

これはコンパイル エラーにはなりませんが、機能しません。実行時に、Eclipselinknullはこのフィールドに を使用してオブジェクトをインスタンス化するだけです。

私が欠けているものはありますか、または私がやろうとしていることはJAXBでも可能ですか?

4

1 に答える 1

1

@XmlPathこれは、拡張機能を使用して EclipseLink JAXB (MOXy) で実行できます。

@XmlPath("LEVEL_1/SUBLEVEL_1/YET_ANOTHER_SUBLEVEL/STATUS/text()")
private String statusCode;

詳細については

于 2012-08-17T19:02:00.997 に答える