2014-02-12 68 views
2

我想从骆驼输入xml中提取节点值,下面是我有的示例xml和示例路由。无法使用骆驼中的xpath获取节点值

<root> 
    <jobs> 
      <job id="1">Salesman</job> 
      <job id="2">Manager</job> 
    </jobs> 
</root> 

在这里,我想获取第一份工作是推销员。

路线

from("file:src/data?noop=true") 
.setHeader("someHeader",xpath("/root/jobs/job")) 
.to(someCustomComponent://foo); 

当我检索报头,IAM获得DTMNodeList的实例从我需要后迭代以提取节点值。

Iam预期值将作为字符串检索。我怎么做?

谢谢。

问候 塞特希·库马尔·谢卡尔

回答

0

尝试/root/jobs/job/text()在XPath

+0

这仍然会给你一个节点集,只有一个包含文本节点而不是元素节点。 –

4

使用stringResult

from("file:src/data?noop=true") 
    .setHeader("someHeader",xpath("/root/jobs/job").stringResult()) 
    .to(someCustomComponent://foo); 

这会给你一个 “推销员”,只是因为一个 “字符串值” 的定义XPath 1.0中的多个节点集合是文档顺序中集合中第一个节点的值。但您可能想要使用更具体的路径来确保您正确地做出正确的选择,例如/root/jobs/job[@id='1']

0

请尝试以下xpath:string-join(/ root/jobs/job,',')。这将给出逗号分隔的字符串的节点值。