Camel xpath toLowerCase并包含

时间:2012-11-30 09:05:35

标签: java xpath apache-camel

我们正在申请骆驼。我需要处理一些xml消息(获取值\比较状态)。为了解决这个问题,有一堆使用纯java编写的自定义处理器,但我被要求使用camel功能来改变它。 代码示例:

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

这很好用。

现在我需要将提示与其他一些提示进行比较,为此我需要设置值:

/Response/Header/Hint

小写并检查包含。 如果 - / Response / Header / Hint值(例如:

<Hint>MyHint</Hint> 

- 小写包含“提示”然后路由到...否则.... 我不是xpath专家,骆驼看起来有一些变化,所以请你帮帮我。

我感兴趣的另一件事是,如何删除整个&lt;提示&GT; MyHint&LT; /提示&GT;在向前传递消息之前(删除一些标签)

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

2 个答案:

答案 0 :(得分:1)

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

关于移除<Hint>标签,您有多重可能性,例如:

  1. 使用XSLT过滤内容,如remove xml tags with XSLT
  2. 所示
  3. 调用执行过滤的Bean

答案 1 :(得分: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!