我不知道是不是我或这是一个错误。但是,我已尝试使用$ {body.skip(1)}和拆分EIP进行多次迭代,但它不起作用。它继续抛出异常从元素'simple'开始发现无效内容。其中之一......
测试xml代码
<route
id="core.predix.consumer.route"
autoStartup="true" >
<from id="predixConsumer" ref="predixConsumer" />
<convertBodyTo type="java.lang.String" />
<split streaming="true" strategyRef="TSAggregationStrategy"> <!-- stopOnException="true" streaming="true" > -->
<simple>${body.skip(1)}</simple>
<tokenize token="\n"/>
<log message="Split line ${body}"/>
</split>
<log message="after split body: ${body}" />
<to uri="{{fileDestinationEndpoint}}" />
</route>
抛出 引起:org.xml.sax.SAXParseException:cvc-complex-type.2.4.a:找到以元素'simple'开头的无效内容。其中一个'{“http://camel.apache.org/schema/blueprint”:onException,“http://camel.apache.org/schema/blueprint”:when,“http://camel.apache.org/schema/blueprint”:onCompletion,
答案 0 :(得分:2)
你不能同时拥有
<simple>${body.skip(1)}</simple>
<tokenize token="\n"/>
作为拆分器表达式,如果要跳过第一行,则可以使用标记器的skipFirst
选项
<tokenize token="\n" skipFirst="true"/>
答案 1 :(得分:0)
@Override
public void process(Exchange exchange) throws Exception,
TimeStampCannotBeParsedException {
log.info("Entering TimeStamp Enrichment Processor...");
String rec = exchange.getIn().getBody(String.class);
String[] sa = rec.split(",");
log.info("TimeStamp to be enriched: " + sa[0]);
if ( (Integer.valueOf((int)exchange.getProperty("CamelSplitIndex"))) > 0 ) {
DateUtil fromPattern = new DateUtil();
final String patternOfDateToConvert = fromPattern.dateFormatPattern(sa[0].trim());
log.info("Pattern Of Date to Convert: " + patternOfDateToConvert );
try {
Date date = new SimpleDateFormat(patternOfDateToConvert).parse(sa[0].trim());
final String todate = new SimpleDateFormat("MM/dd/yyyy hh:mm:ss a").format(date);
log.info("Converted Date: " + todate);
sa[0] = todate;
} catch (ParseException e) {
log.error(e.getMessage());
throw new TimeStampCannotBeParsedException("Timestamp Cannot be Converted to Date. Invalid Format!");
}
String str = Arrays.toString(sa);
String record = str.replaceAll("[\\[\\]]", "");
log.info("New Record: " + record);
rec = record + "\r\n";
} else {
rec = rec + "\r\n";
}
log.info("out Body: " + rec);
exchange.getIn().setBody(rec);
log.info("Leaving TimeStamp Enrichment Processor...");
}