2016-04-26 33 views
0

我有以下XMLXPath表達式中騾FO各範圍

<response> 
    <data-table filter="XXX" count="26"> 
    <columns> 
    <column>sampm</column> 
    <column>sampn</column>  
    </columns> 
    <rows> 
    <row attr="535545"> 
    <field>sampx</field> 
    <field>sampy</field> 
    </row> 
    <row attr="535548"> 
    <field>samp1</field> 
    <field>samp2</field> 
    </row> 
    </rows> 
    </data-table> 
    </response> 

從這個響應我必須遍歷行即; /response/data-table/rows/row 因此,這裏是我的騾子代碼段爲每個

<http:request config-ref="HTTP_REQUEST" path="api/query" method="GET" doc:name="HTTP" followRedirects="true">     
      </http:request> 
      <object-to-string-transformer doc:name="Object to String"/> 
      <foreach collection="#[xpath3('//response/data-table/rows')]" doc:name="For Each"> 
       <logger message="#[payload]" level="INFO" doc:name="Logger"/> 
      </foreach> 

但我得到一個警告「The expression does not evaluate to a type that can be split: java.lang.String"

有沒有什麼解決此問題

回答

0

指定xpath3返回類型爲NODESET

<foreach 
    collection="#[xpath3('//query-response/data-table/rows', payload, 'NODESET')]" 

這應該是可迭代的。

+1

我試過你的建議。所以現在沒有警告「表達式不評估爲可拆分類型:java.lang.String」但是foreach中的記錄器將有效載荷作爲[行:空]而我想記錄儀應打印<中行的主鍵= 「535547」> KAT002入境 MATT1104133放電 4月14日-2016 1249

+0

那是因爲你遍歷DOM節點,而不是字符串。嘗試使用'object-to-xml-transformer'將每個迭代值轉換爲XML字符串。如果不工作,請使用step-debug來精確確定每一行的類型並按照您的要求進行渲染。 –

1

Rows將返回你的對象,嘗試改變你的表情xpath3('//query-response/data-table/rows/row')

+0

Manik Magar這不起作用 –