我正在尝试从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
答案 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,',')。这将给出逗号分隔的节点值字符串。