私のアプリケーションは非常に長い 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でも可能ですか?