2

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

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

这工作正常。

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

/Response/Header/Hint

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

<Hint>MyHint</Hint> 

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

我感兴趣的另一件事是,如何在转发消息之前删除整个 <Hint>MyHint</Hint> (删除一些标签)

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

4

2 回答 2

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 是一个小改动,使用 XSLT 删除 xml 标签 非常感谢 olivier roger!

于 2012-11-30T11:34:35.403 回答
1

您可以使用fn:lower-case(string)如何比较提示,如如何使用 XSLT 将字符串转换为大写或小写?.

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

  1. 使用XSLT过滤内容,如使用 XSLT删除 xml 标记中所示
  2. 调用进行过滤的Bean
于 2012-11-30T10:03:55.563 回答