次のような構造の XML ファイルがあります。
<element1>
<element2>
<element3>
<elementIAmInterestedIn attribute="data">
<element4>
<element5>
<element6>
<otherElementIAmInterestedIn>
<data1>text1</data1>
<data2>text2</data2>
<data3>text3</data3>
</otherElementIAmInterestedIn>
</element6>
</element5>
</element4>
</elementIAmInterestedIn>
<elementIAmInterestedIn attribute="data">
<element4>
<element5>
<element6>
<otherElementIAmInterestedIn>
<data1>text1</data1>
<data2>text2</data2>
<data3>text3</data3>
</otherElementIAmInterestedIn>
</element6>
</element5>
</element4>
</elementIAmInterestedIn>
<elementIAmInterestedIn attribute="data">
<element4>
<element5>
<element6>
<otherElementIAmInterestedIn>
<data1>text1</data1>
<data2>text2</data2>
<data3>text3</data3>
</otherElementIAmInterestedIn>
</element6>
</element5>
</element4>
</elementIAmInterestedIn>
</element3>
</element2>
</element1>
ご覧のとおり、私は 2 つの要素に関心があります。最初の要素はルート要素内に深くネストされており、2 番目の要素は最初の要素内に深くネストされています。ドキュメント内に複数の (兄弟) elementIAmInterestedIn 要素と otherElementIAmInterestedIn 要素があります。
この XML ファイルを Java で解析し、すべての elementIAmInterestedIn および otherElementIAmInterestedIn 要素からのデータをデータ構造または Java オブジェクトのいずれかに配置したいと考えています。
すべての要素に触れるように、XML の深さ優先走査を行う再帰的な DOM パーサー メソッドを作成できました。また、elementIAmInterestedIn を表す JAXB アノテーションを使用して Java クラスを作成しました。次に、再帰メソッドで、いつ elementIAmInterestedIn に到達したかを確認し、それを JAXB クラスのインスタンスに非整列化します。このようなオブジェクトには複数の otherElementIAmInterestedIn も含まれている必要があることを除いて、これは正常に機能します。
これは私が立ち往生しているところです。otherElementIAmInterestedIn からデータを取得して JAXB オブジェクトに割り当てるにはどうすればよいですか? @XmlWrapper アノテーションを見たことがありますが、これはネストの 1 つのレイヤーでしか機能しないようです。また、@XmlPath も使用できません。
たぶん、その考えを捨てて、まったく新しいアプローチを使用する必要があります。私は本当に XML 解析を始めたばかりなので、より明白な解決策を見落としている可能性があります。このように構造化された XML ドキュメントをどのように解析し、データを整理して保存しますか?