【问题标题】:camel xpath: TransformerException: Unable to evaluate expression using this context骆驼xpath:TransformerException:无法使用此上下文评估表达式
【发布时间】:2014-11-26 08:08:58
【问题描述】:

我正在尝试在我的骆驼路线中使用骆驼 xpath 过滤器。我在单元测试中遇到无法解决的错误。我将不胜感激。

尝试分析以下 xml 时:

<publication>

<publicationId>1</publicationId>
<alias>false</alias>
<publicationType>NEW</publicationType>
<zone>VALIDATION</zone>
<routingKey>WWX_VECTOR</routingKey>
<contexts>
    <context>GEO</context>
</contexts>

<resource>
    <resourceFamily>
        <releasedOnPww>false</releasedOnPww>
    </resourceFamily>
    <featureType>
        <name>buildings</name>
    </featureType>
</resource>
</publication>

使用以下 xpath:

.filter().xpath("/publication/resource/resourceFamily/releasedOnPww/text() = 'true'")

我得到以下异常:

Caused by: java.lang.RuntimeException: Unable to evaluate expression using this context
at com.sun.org.apache.xpath.internal.axes.NodeSequence.setRoot(NodeSequence.java:212)
at com.sun.org.apache.xpath.internal.axes.LocPathIterator.execute(LocPathIterator.java:210)
at com.sun.org.apache.xpath.internal.Expression.execute(Expression.java:153)
at com.sun.org.apache.xpath.internal.operations.Operation.execute(Operation.java:107)
at com.sun.org.apache.xpath.internal.XPath.execute(XPath.java:335)

奇怪的是,代码在运行时似乎运行正常,错误只发生在单元测试期间。

【问题讨论】:

  • 你能分享你的路由和单元测试的部分吗?
  • 很难分享代码Itsallas,因为它相当大......无论如何,我认为在我的xpath之前消息可能是空的。如果事件为空,这能解释问题吗?
  • 您的 xpath 表达式没有问题。我在交换中使用 null 正文的单元测试中遇到了同样的异常。当交换主体不为空时,它按预期工作。

标签: xml xpath apache-camel


【解决方案1】:

我觉得你应该试试这个

.filter().xpath("/publication/resource/resourceFamily[releasedOnPww='true']")

可能是命名空间中的问题,请参阅此线程http://camel.465427.n5.nabble.com/fail-filter-XPATH-camel-td476424.html

编辑:正如@Mylen 所说,我的评论能够解决问题。所以我将评论包含在这个答案中。 甚至您的 Xpath 表达式看起来也不错。一旦尝试检查正文 .log(" (body) = ${body}") 中的 XML。可能消费的 XML 与预期的不一样。

【讨论】:

  • 我昨天尝试了该解决方案但没有成功...出现同样的错误。
  • 我没有使用任何 NS,所以它与您的链接无关。无论如何感谢您的帮助
  • 即使您的 Xpath 表达式看起来也不错。一旦尝试检查正文 .log(" (body) = ${body}") 中的 XML。可能消费的 XML 与预期的不一样。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-06-01
  • 1970-01-01
  • 2020-06-26
  • 1970-01-01
相关资源
最近更新 更多