【发布时间】:2016-09-29 12:52:30
【问题描述】:
我无法让 xpath 表达式工作。我正在使用骆驼 2.15.1。任何帮助将不胜感激。
我尝试了以下方法
<xpath>name(//*[1])='PPR_PC2'</xpath>
<xpath>name("//*[local-name()='PPR_PC2')</xpath>
<xpath>//PPR_PC2</xpath>
我的 xml 文件
<?xml version="1.0" encoding="UTF-8"?>
<PPR_PC2 xmlns="urn:hl7-org:v2xml">
<MSH>
<MSH.1>|</MSH.1>
...
...
</MSH>
...
...
</PPR_PC2>
我的骆驼路线
<route id="_route_1">
<from uri="activemq:queue:myQIN"/>
<doTry>
<choice>
<when>
// This path works without having namespace
<xpath>name(//*[1])='PPR_PC2'</xpath>
<to uri="xslt:transform/stylesheet.xsl"/>
<to uri="..."/>
</when>
<otherwise> ... </otherwise>
</choice>
<doCatch> ... </doCatch>
</doTry>
</route>
这是我遇到的错误
[thread #1 - JmsConsumer[myQIN]] EndpointMessageListener
WARN Execution of JMS message listener failed.
Caused by: [org.apache.camel.builder.xml.InvalidXPathExpression - Invalid xpath: name(//*[1])='PPR_PC2'.
Reason: javax.xml.xpath.XPathExpressionException: net.sf.saxon.trans.XPathException:
A sequence of more than one item is not allowed as the first argument of name() (<PPR_PC2/>, <MSH/>, ...) ]
org.apache.camel.builder.xml.InvalidXPathExpression:
Invalid xpath: name(//*[1])='PPR_PC2'.
Reason: javax.xml.xpath.XPathExpressionException: net.sf.saxon.trans.XPathException:
A sequence of more than one item is not allowed as the first argument of name() (<PPR_PC2/>, <MSH/>, ...)
【问题讨论】:
标签: xml xpath apache-camel