2016-09-20 12 views
0

私は古いプロジェクトの決定のために、Jerseyを使用してXMLデータを返すサービスに接続するプロジェクトに取り組んでいます。時々私はXmlRootElementで注釈を付け何でも/豆/ POJOを作成することができます。しかしwebTarget.get(MyPojo.class)Jersey XMLをマップ

を使用し、私は、言う、とジャクソンを行い、そしてwebTarget.get(Map.class)をするだろう何をしようとする場合、私は次のエラーを取得する:

MessageBodyReader not found for media type=text/xml, type=interface java.util.Map, genericType=interface java.util.Map. 

私の場合、私は任意のフィールドを持つことができるXMLを持っているので、それを読むための理想的な方法はマップを読むことです。他の図書館に頼らなくても私ができることはありますか?データをシリアライズする必要はなく、接続するWebサービスからの応答のみを逆シリアル化します。

答えて

0

答えを見つけました。ちょっと憂鬱です。

Unofficial JAXB Guideによれば、非常に醜いハッキングを行わない限り、Mapをルート要素として使用することはできません。 Stringとして

  1. 読むと、文字列からMapを読み取るためにジャクソンを使用しますので、解決策があります。
  2. 醜いハッキングを行います。
  3. Bean内のスキーマの一部を記述しますが、可変フィールドを持つ部分をデシリアライズしてMapにすることができます。
関連する問題