Accéder au contenu principal Passer au contenu complémentaire

JavaBean vers sérialisation XML

Pour migrer vos Routes existantes vers la Représentation XML dans Talend Data Mapper, vous devez utiliser XStream.

Avant de commencer

Comprenez les différences entre la Route dans l'implémentation précédente et la Route dans la nouvelle implémentation.
Commencez par la Route suivante :
Après la migration, la Route ressemble à ceci :
où cProcessor1p et cProcessor2p sont des processeurs Camel supplémentaires.

Procédure

  1. Effectuez une copie de la map utilisée par le composant cMap. Dans cet exemple, nommez-la mXml.
  2. Ajoutez la Représentation XML aux structures d'entrée et de sortie utilisées par mXml.
  3. Modifiez mXml et changez les Représentations d'entrée et de sortie à XML.
  4. Ajoutez les fichiers xstream.jar, xpp3.jar et xmlpull.jar à votre configuration.
  5. Ajoutez le code au cProcessor1p. Par exemple :
    org.apache.camel.Message message = exchange.getIn();
    Object payload = message.getBody();
    org.talend.transform.bean.test.Parent p = (org.talend.transform.bean.test.Parent) payload;
    
    com.thoughtworks.xstream.XStream xstream = new com.thoughtworks.xstream.XStream();
    xstream.alias("Parent", org.talend.transform.bean.test.Parent.class);
    xstream.alias("children", org.talend.transform.bean.test.Child.class);
    xstream.addImplicitCollection(org.talend.transform.bean.test.Parent.class, "children");
    String xml = xstream.toXML(p);
    
    org.apache.camel.impl.DefaultMessage in = new org.apache.camel.impl.DefaultMessage();
    in.setBody(xml);
    exchange.setIn(in);
    Note InformationsRemarque :
    • Remplacez org.talend.transform.bean.test par votre package ou vos classes.
    • XStream nécessite que des alias génèrent du XML correspondant à celui attendu par mXml.
  6. Ajoutez le code au cProcessor2p. Par exemple :
    org.apache.camel.Message message = exchange.getIn();
    Object payload = message.getBody();
    String xml = (String) payload;
    System.out.println(xml);
    		
    com.thoughtworks.xstream.XStream xstream = new com.thoughtworks.xstream.XStream();
    xstream.alias("Parent", org.talend.transform.bean.test.Parent.class);
    xstream.alias("children", org.talend.transform.bean.test.Child.class);
    xstream.addImplicitCollection(org.talend.transform.bean.test.Parent.class, "children");
    org.talend.transform.bean.test.Parent p = (org.talend.transform.bean.test.Parent) xstream.fromXML(xml);
    org.apache.camel.Message in = new org.apache.camel.impl.DefaultMessage();
    in.setBody(p);
    exchange.setIn(in);
    Note InformationsRemarque : Remplacez org.talend.transform.bean.test par votre package ou vos classes.

Cette page vous a-t-elle aidé ?

Si vous rencontrez des problèmes sur cette page ou dans son contenu – une faute de frappe, une étape manquante ou une erreur technique – faites-le-nous savoir.