メイン コンテンツをスキップする 補完的コンテンツへスキップ

JavaBeanをXMLシリアライゼーションに実行

Talend Data MapperのXML表記に既存のルートを移行する場合は、XStreamを使用する必要があります。

始める前に

以前の実装と新しい実装でルートの違いを理解します。
次のルートで始めます:
移行後のルートは次のようになります:
cProcessor1pとcProcessor2pは、追加のCamelプロセッサーを表します。

手順

  1. cMapコンポーネントによって使われるマップのコピーを作成します。この例では、mXmlと名付けます。
  2. mXmlによって使われる入出力ストラクチャーにXML表記を追加します。
  3. mXmlを編集し、入出力の表記をXMLに変更します。
  4. xstream.jarxpp3.jarxmlpull.jarを設定に追加します。
  5. cProcessor1pにコードを追加します。例:
    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);
    情報メモ注:
    • org.talend.transform.bean.testを、パッケージまたはクラスに置き換えます。
    • XStreamは、mXmによって期待されるXMLに適合するXMLを生成するため、エイリアスをいくつか必要とします。
  6. cProcessor2pにコードを追加します。例:
    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);
    情報メモ注: org.talend.transform.bean.testを、パッケージまたはクラスに置き換えます。

このページは役に立ちましたか?

このページまたはコンテンツにタイポ、ステップの省略、技術的エラーなどの問題が見つかった場合はお知らせください。