无法在camel中使用xpath获取节点值

时间:2014-02-12 08:48:34

标签: xpath apache-camel

我正在尝试从camel中的输入xml中提取节点值,下面是我拥有的示例xml和示例路由。

<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);

当我检索标题时,我得到一个DTMNodeList实例,我需要在迭代后提取节点值。

我希望将值作为字符串检索。我该怎么做?

感谢。

此致 Senthil Kumar Sekar

3 个答案:

答案 0 :(得分:4)

使用stringResult

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

这将为您提供“Salesman”,因为XPath 1.0中一组多个节点的“字符串值”的定义是文档顺序中集合中第一个节点的值。但是您可能希望使用更具体的路径来确保您正确地选择正确的路径,例如/root/jobs/job[@id='1']

答案 1 :(得分:0)

在xpath中尝试/root/jobs/job/text()

答案 2 :(得分:0)

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