2016-04-26 10 views
0

私はローすなわちオーバーループに有し、このレスポンスからXMLXpath式

<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

戻り値の型をNODESETと指定してください:

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

これは繰り返し可能です。

+1

私はあなたの提案を試みました。今は警告がありません "式は分割可能な型に評価されません:java.lang.String"しかし、foreach内のロガーはペイロードを[行:ヌル]私はロガーは、<主キー= "535547" 行>印刷する必要がありますしたいのに対し KAT002インバウンド MATT1104133放電あなたはDOMを反復しているためだ 14年04月2016 1249

+0

ノードであり、文字列ではありません。 'object-to-xml-transformer'を使って反復された各値をXML文字列に変換してみてください。動作していない場合は、step-debugを使用して、各行のタイプを正確に把握し、必要に応じてレンダリングします。 –

1

Rowsこの問題の周りのすべての作業をしてみてください、あなたのオブジェクトを返しますあります式をxpath3('//query-response/data-table/rows/row')に変更する

+0

Manik Magarこれは動作しません –