0

xml ファイルから文字列を取得し、その値をオブジェクトに設定しようとしていますが、これを行う方法がわかりません。これまでに行ったことは次のとおりです。

public class Converter {

public static void main(String[] args) throws Exception {

    final XmlJsonDataFormat xmlJsonFormat = new XmlJsonDataFormat();
    xmlJsonFormat.setTypeHints(String.valueOf("YES"));

    CamelContext context = new DefaultCamelContext();
    context.getTypeConverterRegistry().addTypeConverter(User.class, String.class, new UserConverter());        

    context.addRoutes(new RouteBuilder() {
        public void configure() {
            from("ftp://Mike@localhost")
                    .to("seda:input").marshal(xmlJsonFormat).to("seda:out");
        }
    });

    User user = context.getTypeConverter().convertTo(User.class, "seda:out"); // Here i need to access string from "seda:out"

    context.start();
    Thread.sleep(5000);
    System.out.println(user.getLogin());

}

private static class UserConverter extends TypeConverterSupport {

    @SuppressWarnings("unchecked")
    public <T> T convertTo(Class<T> type, Exchange exchange, Object value) {
        User user = new User();
        user.setLogin(String.valueOf(value.toString()));
        return (T) user;
    }
}
}

私の出力はseda:outですが、出力を文字列、つまり in にする必要がありますseda:out
これはどのように行うことができますか?

4

1 に答える 1

0

TypeConvertor を使用する代わりに、プロセッサを使用します。プロセッサはラクダ交換から文字列を抽出し、ユーザー オブジェクトを作成します。ルートは次のようになります

from("ftp://Mike@localhost").to("file://someDirPath").marshal(xmlJsonFormat).process(
    new Processor() {
      public void process(Exchange exchange) throws Exception {
          String payload = exchange.getIn().getBody(String.class);
          // create the User object and set in  the body
          exchange.getIn().setBody(userObject);} });
于 2013-10-16T13:42:34.313 に答える