关于骆驼路线的问题-解析XML标签

时间:2018-10-25 22:45:32

标签: xpath junit apache-camel

我有一条复杂的骆驼路线,该路线以初始化路线开始,该路线试图使用来自XML的信息(用作输入)设置标头。

我想知道路由如何无法使用XPath解析XML内容。

在调用路由之前,我在java JUNIT中打印xml信息,并正确打印所有xml标记。

所以我知道信息正在按预期发送。

但是应该使用XPath设置标头的路由将空值返回给我尝试使用的任何表达式!我什至使用了XPath工具来帮助我(https://codebeautify.org/Xpath-Tester),以检查是否存在xpath编码错误,但是我从那里得到了想要的结果。

所以,让我们假设,我有一个XML:

<bic:Test>
    <bic:context>       
            <bic:memberCode>GOOGLE</bic:memberCode>
    </bic:context>
</bic:Test>

因此,下面一行:

<setHeader headerName="myHeader">
                <xpath resultType="java.lang.String">//<anyTag>/text()</xpath>
</setHeader>

<setHeader headerName="myHeader">
                <xpath resultType="java.lang.String">//<anyTag></xpath>
</setHeader>

我将看到标题为空的内容。

我尝试了很多不同的事情,最终我决定使用XPath表达式作为/来打印所有内容。

它将仅打印内容(“ GOOGLE”),而不打印标签。

你能帮我吗?

提前谢谢!

1 个答案:

答案 0 :(得分:1)

这可能是与名称空间有关的问题。 您必须在骆驼上下文中定义bic命名空间,然后在xpath表达式中使用它。

请查看https://github.com/apache/camel/blob/master/camel-core/src/main/docs/xpath-language.adoc中的文档,尤其是在“使用XML配置”示例中

也请参阅“命名空间审核以帮助调试”,以获取有关调试骆驼中与命名空间相关的问题的更多信息。

相关问题