[英]XML file to std:out (formated) with Apache Camel
我想使用Apache Camel打印以控制台格式化XML文件:
預期輸出為:
XML->
<client book="Camel in Action" author="4995" title="1"/>
std:out->
Client
book: Camel in Action
author: 4995
title: 1
我當前的代碼:
public class MyRouteBuilder extends RouteBuilder {
@Override
public void configure() throws Exception {
JAXBContext jaxbContext =
JAXBContext.newInstance(Client.class);
JaxbDataFormat jaxbDataFormat = new
JaxbDataFormat(jaxbContext);
from("file:/home/tkaczmarek/usr/data/inbox/")
.unmarshal(jaxbDataFormat)
.to("file:/home/tkaczmarek/usr/data/outbox")
.log("${body}");
}
}
客戶端.java
@XmlRootElement
@XmlAccessorType(XmlAccessType.FIELD)
public class Client {
@XmlAttribute
private String book;
@XmlAttribute
private String author;
@XmlAttribute
private String title;
}
如何獲得預期的輸出? 現在,它只是打印到std:out帶有標簽的XML文件:(
好的,所以我不完全了解您的工作,但是可以使用如下所示的bean()
代替log()
來打印未編組的 xml並以所需的任何方式對其進行格式化。
from("file:/home/tkaczmarek/usr/data/inbox/")
.to("file:/home/tkaczmarek/usr/data/outbox")
.bean(XmlToBean.class);
這是XmlToBean
類-
public class XmlToBean {
public void transformXmlObject(Client client){
System.out.println(client.toString());
}
}
注意,除非您有一些特殊要求,否則我什至沒有使用過unmarshal()
因為僅在類路徑中才需要使用它。 如果您認為添加另一個類是多余的,那么process()
也足夠了,如下所示:
from("file:/home/tkaczmarek/usr/data/inbox/")
.to("file:/home/tkaczmarek/usr/data/outbox")
.process(exchange -> {
System.out.println(exchange.getIn().getBody(Client.class));
});
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.