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

问题描述

| 这可能是骆驼或xpath问题:)。注意非骆驼人:骆驼使用javax.xml.xpath解析他们的xml。 在骆驼路线中,我试图从xml主体中拉出一个元素以用作我的文件名:
Namespaces ns = getNamespaces();

String fileIDxPath = (see notes);

from(\"direct:testOutToFile\")
    .setHeader(Exchange.FILE_NAME,ns.xpath(fileIDxPath))
    .to(\"file:/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 \'的实例,而不是String,这是预期的类型。 谢谢大家 罗伊     

解决方法

        试试这个...在2.8-快照中工作正常
.setHeader(Exchange.FILE_NAME,XPathBuilder.xpath(\"normalize-space(//rm:TradeMsg/rm:Submitter/rm:partyTradeIdentifier/fpml:tradeId/text()\",String.class))
    ,        你有没有尝试过: normalize-space(// rm:TradeMsg / rm:Submitter / rm:partyTradeIdentifier / fpml:tradeId) ?     

相关问答

Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其...
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。...
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbc...