我有一条复杂的骆驼路线,该路线以初始化路线开始,该路线试图使用来自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”),而不打印标签。
你能帮我吗?
提前谢谢!
答案 0 :(得分:1)
这可能是与名称空间有关的问题。 您必须在骆驼上下文中定义bic命名空间,然后在xpath表达式中使用它。
请查看https://github.com/apache/camel/blob/master/camel-core/src/main/docs/xpath-language.adoc中的文档,尤其是在“使用XML配置”示例中
也请参阅“命名空间审核以帮助调试”,以获取有关调试骆驼中与命名空间相关的问题的更多信息。