2016-10-04 7 views
0

からフェッチする私はSpring Bootを使用してクライアントを実装しようとしています。これは、サイトからすべてのプロダクトを取り出してデータベースに格納します。格納部は世話をしていますが、すべての製品のリストを取得するのに問題があります。 Spring RESTオブジェクトのリストを

<Response> 
    <Products> 
     <Product Id="221"> 
      <Name>Screwdriver<Name> 
      <Price>5,99</Price> 
      <Currency>USD<Currency> 
     </Product> 
     ... 
    </Products> 
</Response> 

は、私はすべてのフィールド、getterとsetterを持つ製品のクラスを持っている: ポストマンでのテスト、私はこのようなボディを持つ応答を得ることができます。ここで動作し、生の身体のXMLを出力するものです:

@Bean 
    public CommandLineRunner run(RestTemplate restTemplate) throws Exception { 

     return args -> { 
      ResponseEntity<String> response = restTemplate.getForEntity(resourceUrl, String.class); 
      log.info(response.toString()); 
     }; 

    } 

しかし、私はそれが体から個々の製品のすべてを取得するために取得するように見えることはできません。 ここで取り出されたボディを使用して個々のオブジェクトにマッピングするのが最善でしょうか、それともrestTemplateから直接行う方法がありますか?

ご協力いただければ幸いです。

答えて

1

私が理解する限りでは、XML文字列をJavaオブジェクトに逆シリアル化する方法を探しています。あなたはそれを

  1. 使用JAXB(低いため、メンテナンスの私の個人的な好み)、XStreamの またはJiBXのライブラリーを行うと、それはあなたのための変換の世話を聞かせするために多くの異なるオプションを持っています。 製品の クラスに特定の注釈を追加する必要があります(JAXBの場合、XSDへのアクセスが の場合は、これを自動生成できます)。
  2. あなたの 所有者のDOM、SAX、またはStaXパーサーのいずれかのパーサー(使用する場合は の場合)を使用して、壊れたルートに移動してProductインスタンスを作成します。
関連する問題