Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/xpath/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
修剪骆驼路由中使用的xpath表达式_Xpath_Apache Camel - Fatal编程技术网

修剪骆驼路由中使用的xpath表达式

修剪骆驼路由中使用的xpath表达式,xpath,apache-camel,Xpath,Apache Camel,这可能是一个驼峰或xpath问题:)。非骆驼族注意:骆驼使用javax.xml.xpath解析他们的xml 在camel路径中,我试图从xml正文中提取一个元素作为我的文件名: Namespaces ns=getNamespaces(); 字符串fileIDxPath=(参见注释); from(“直接:testOutToFile”) .setHeader(Exchange.FILE_NAME,ns.xpath(fileIDxPath)) .to(“文件:/tmp/testing/generate

这可能是一个驼峰或xpath问题:)。非骆驼族注意:骆驼使用javax.xml.xpath解析他们的xml

在camel路径中,我试图从xml正文中提取一个元素作为我的文件名:

Namespaces ns=getNamespaces();
字符串fileIDxPath=(参见注释);
from(“直接:testOutToFile”)
.setHeader(Exchange.FILE_NAME,ns.xpath(fileIDxPath))
.to(“文件:/tmp/testing/generatedXML”);
但我似乎无法得到一个xpath,它可以为我提供节点的修剪值。以下是我尝试过的xpath:

A) //rm:TradeMsg/rm:Submitter/rm:partyTradeIdentifier/fpml:tradeId/
B) //rm:TradeMsg/rm:Submitter/rm:partyTradeIdentifier/fpml:tradeId/text()
C) //rm:TradeMsg/rm:Submitter/rm:partyTradeIdentifier/fpml:tradeId/text()[normalize-space()]
D) normalize-space(//rm:TradeMsg/rm:Submitter/rm:partyTradeIdentifier/fpml:tradeId/text())
  • A) 返回整个节点,而不仅仅是值
  • B) 返回值,但包含大量空白
  • C) 还返回包含所有空格的值
  • D) 抛出XPathExpressionException
xpath专家的问题-我的xpath中是否遗漏了一些可以修剪此值的内容

骆驼大师的问题-也许我可以在评估后修剪这个值?我知道我可以让它通过另一个步骤,但我认为这将是一个足够常见的用例,可以在ns.xpath调用本身中得到支持

我还注意到ns.xpath将头设置为'com.sun.org.apache.xml.internal.dtm.ref.DTMNodeList'的实例,而不是字符串,这将是预期的类型

谢谢大家,
罗伊

你试过: 规范化空间(//rm:TradeMsg/rm:Submitter/rm:partyTradeIdentifier/fpml:tradeId)
试试这个……它在2.8-SNAPSHOT中运行良好

.setHeader(Exchange.FILE_NAME, 
           XPathBuilder.xpath("normalize-space(//rm:TradeMsg/rm:Submitter/rm:partyTradeIdentifier/fpml:tradeId/text()", String.class))

谢谢Anthony-刚刚试过,得到了XPathExpressionException,比如案例D。