2014-02-12 75 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,',')。這將給出逗號分隔的字符串的節點值。