2012-11-30 78 views
2

我们正在转向骆驼在我们的应用程序。我需要处理一些xml消息(获取values \ compare状态)。为了解决这个问题,有一堆使用纯java编写的自定义处理器,但是我被要求使用camel特性来改变这个问题。 示例代码:骆驼xpath toLowerCase并包含

.choice() 
    .when().xpath("/Response/Header/Status = 'OK' ")...... 

这工作正常。

现在我需要与其他一些暗示来比较提示,要做到这一点,我需要设置的值:

/Response/Header/Hint 

降低的情况下,检查包含。 如果 - /响应/头/提示值(例如:

<Hint>MyHint</Hint> 

- 小写含有“暗示”,那么路线......否则.... 我不是专家的XPath和骆驼长相像有FO这样一些变化,所以可以请你帮我这个。

还有一两件事我很感兴趣,我怎么向前传递消息之前删除整个<提示> MyHint < /提示>(删除一些标签)

你可以建议一些教程快速进入骆驼的xpath。

回答

1

您可以使用fn:lower-case(string)来比较How can I convert a string to upper- or lower-case with XSLT?中所述的提示。

关于去除<Hint>标签的你多发posibilities,如:

  1. 使用XSLT过滤的内容如图remove xml tags with XSLT
  2. ,呼叫Bean,做过滤
+0

使用XSLT过滤内容,如使用XSLT移除xml标签所示。完美工作!我有测试失败可能有些修剪空间被添加\删除,但是,我可以看到消息正确转换,谢谢!现在先尝试 – user1424119

+0

很高兴听到这个消息,如果它解决了你的问题,你能接受答案吗? (见http://meta.stackexchange.com/questions/5234/how-does-accepting-an-answer-work) –

+0

我需要15点声望才能接受!再次感谢! – user1424119

1

答案是这样的:

.choice() 
    .when().xpath("/Response/Header/Status/text() = 'OK'") 
     .to("xslt:xsl/RemoveTag.xsl") 
      .choice().when().xpath("//Response/Header/Hint[contains(translate(., 'ABCDEFGHIJKLMNOPQRSTUVWXYZ', 'abcdefghijklmnopqrstuvwxyz'), 'hint')]").to 

RemoveTag.xsl很小改变remove xml tags with XSLT 非常感谢olivier roger!