2

スタイルの構成ドキュメントの大規模なセットがあります

<foo>
  <bar class="com.diedel.Gnarf">
    ...more content
  </bar>
  <bar class="de.doedel.Bork">
    ..more content
  </bar>
  ...
</foo>

汎用実装クラスはすべて、Jaxb 自体を使用してマップされます。

最終的に Xstream に戻る前に、コミュニティへの質問: Jaxb でこれを非整列化する (ハックではない) 方法はありますか? これまでに試みたのは、@XMLAdapter を使用した「ネストされた」アンマーシャリングで、「バー」フィールドが要素を取得し、ターゲット クラスを取得して、別の「アンマーシャリング」サイクルを呼び出します。このアプローチは、a) 非常に遅く、b) Java 7 への切り替えで中断されます。Java 7 では、一部の魔法の ThreadLocal が、内部アンマーシャルから戻るときにコンテキストを破棄します。

MOXy が @XmlDiscriminatorNode を使用してこれをサポートする可能性があることがわかりました - これは良い解決策のように見え、Blaise の非常に優れた入力が本当に気に入っています - しかし、楽しみのためだけに 7MB を超えるライブラリを追加することはオプションではありません。

他のアイデア?

4

2 に答える 2

2

構造が本当に単純な場合は、を使用して上位2つのレベル(fooとbarのclass属性)を自分で解析したいと思うでしょうXMLStreamReader。次に、リーダーをJAXBアンマーシャラーに渡して、各barを解析し、結果をリスト。JAXBを直接使用して外側のエンベロープレイヤーを解析しようとはしません。

于 2012-09-13T08:55:53.847 に答える