Java 从文件中获取字符串

Java 从文件中获取字符串,java,string,apache-camel,Java,String,Apache Camel,我试图从xml文件中获取字符串并将其值设置为一个对象,但不知道如何执行此操作。以下是我迄今为止所做的工作: public class Converter { public static void main(String[] args) throws Exception { final XmlJsonDataFormat xmlJsonFormat = new XmlJsonDataFormat(); xmlJsonFormat.setTypeHints(String.valu

我试图从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;
    }
}
}
公共类转换器{
公共静态void main(字符串[]args)引发异常{
最终XmlJsonDataFormat xmlJsonFormat=新的XmlJsonDataFormat();
setTypeHints(String.valueOf(“YES”);
CamelContext=新的DefaultCamelContext();
context.getTypeConverterRegistry().addTypeConverter(User.class、String.class、new UserConverter());
addRoutes(新RouteBuilder(){
public void configure(){
从(”ftp://Mike@本地主机“)
.to(“seda:input”).marshal(xmlJsonFormat).to(“seda:out”);
}
});
User User=context.getTypeConverter().convertTo(User.class,“seda:out”);//这里我需要访问“seda:out”中的字符串
context.start();
睡眠(5000);
System.out.println(user.getLogin());
}
私有静态类UserConverter扩展了TypeConverterSupport{
@抑制警告(“未选中”)
公共T转换器(类类型、交换、对象值){
用户=新用户();
user.setLogin(String.valueOf(value.toString());
返回(T)用户;
}
}
}
我的输出是seda:out,但我需要输出为字符串,即
seda:out


如何做到这一点?

使用处理器,而不是使用类型转换器。处理器应从camel交换中提取字符串并创建用户对象。你的路线应该如下

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);} });

我应该将什么作为参数放入
process()
方法中?您编写它的方式不起作用。请您解释一下
exchange.getIn().setBody(userObject)
的作用是什么?在我的情况下,代码在有行和没有行的情况下的工作方式相同。在process方法中,您从Ftp文件中获取字符串,然后使用该字符串创建用户对象。以便在路由的下一步访问它;它已在交易所设置。因此,同样需要调用exchange.getIn().getBody(User.class)进行检索。在您的情况下,Exchange对象将充当上下文,您可以使用它来获取/设置用户对象。哦,现在我知道了。非常感谢你!