【问题标题】:How to extract values from xml in body using xpath in camel如何使用骆驼中的xpath从正文中的xml中提取值
【发布时间】:2018-03-27 21:57:12
【问题描述】:

我的交换正文中设置了一个 http 响应。我必须从该 xml 中提取一些值。我发现最好的方法是使用 camel-xpath。我必须从根标签级别提取价值。例如在下面的xml中,我要提取的值是attribute1。

<rootTag attribute1="value1">
<child1/>
</rootTag>

我看到了一些使用命名空间的例子。但我认为我没有在这里使用命名空间的范围。如果是这样,我怎么能这样做。我不能直接从交易所的正文中提取它吗?

【问题讨论】:

    标签: xpath apache-camel


    【解决方案1】:

    您可以将您的属性提取到消息头中:

    .setHeader("MyHeader").xpath("/rootTag/@attribute1", String.class)
    

    或将属性添加到正文中:

    .setBody().xpath("/rootTag/@attribute1", String.class)
    

    你在这里不需要命名空间..

    @Gilles Quenot 关于 xpath 表达式当然是正确的。

    【讨论】:

    • 我一直在尝试用 jsonpath 做同样的事情。这里使用 xpath 我们从 xml 中提取数据。我们可以使用 jsonpath 做同样的事情吗?或者有其他方法可以获取 json 中的值并将其设置为 header/body/property 等吗??
    • 是的@Susanna M,你可以:.setHeader("City").jsonpath("$.city", true)
    【解决方案2】:

    这是您需要的 Xpath:

    string(/rootTag/@attribute1)
    

    shell 中的测试

    :

    $ xmlstarlet sel -t -v '/rootTag/@attribute1' file
    

    $ xmllint --xpath 'string(/rootTag/@attribute1)' file
    

    $ xidel -se '/rootTag/@attribute1' file
    

    输出:

    value1
    

    【讨论】:

      猜你喜欢
      • 2023-03-09
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-10-17
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多