2017-08-17 1 views
1

Je lienComment récupérer les données de XML dans Spring Integration

http://www.somelink.com

Quand je l'envoie avec la méthode GET, j'ai XML vu comme celui-ci

<Value> 
    <Id>41</Id> 
    <Date>2017-08-16</Date> 
    <Role>Customer</Role> 
    <Currency>USD</Currency> 
    <Counterparties> 
    <Counterparty><Id>183</Id> 
    <Name>Alex</Name> 
    <FullName>dddd</FullName> 
    <Contacts> 
     <Contact> 
     <Type>Mail</Type> 
     <Value>email.com</Value> 
     </Сontact> 
     <Goods> 
     <Good> 
      <Id>AxojoXSQgN0MZTRX87SJ11</Id> 
      <CatalogId>1c_catalog-bd72d8f9-55bc-11d9-848a-00112f43529a</CatalogId> 
      <Name>*Good name</Name> 
      <Price>340.0000</Price> 
      <Quantity>1.0000</Quantity> 
      <Sum>340</Sum> 
      <Status>[N]New State (И-М)</Status> 
      ... 
</Value> 

Je J'ai besoin de transformer ce fichier xml en objet en utilisant Spring Integration, mais je n'ai pas besoin de récupérer toutes les données, juste certaines comme Good Name, Counterparty Name et Price with Quantity et les transformer en DTO. Comment faire le mieux? Avec JSON c'est beaucoup plus facile, mais je n'ai pas JSON

+1

Si vous avez besoin de transformer xml à Pojo, vous n'avez pas besoin printemps, vous pouvez utiliser 'Jaxb' –

Répondre

1

Je pense que vous pouvez toujours utiliser <unmarshaller-transformer>, mais je ne sais pas comment il serait possible d'éviter la structure imbriquée. Bien que le <int-xml:xpath-transformer> devrait vous aider à extraire la balise imbriquée <Good>, puis envoyer le résultat au <unmarshaller-transformer>. Par contre, vous pouvez simplement utiliser le composant Content Enricher pour un POJO simple et appeler la fonction #xpath() SpEL pour que les propriétés extraient une valeur appropriée de ce XML.

http://docs.spring.io/spring-integration/docs/4.3.11.RELEASE/reference/html/messaging-transformation-chapter.html#payload-enricher