Search code examples
wso2wso2-data-services-serverwso2-integration-studiowso2-esb

Loop Foreach into WSO2ESB doesn't working


I'm integrating wso2dss 3.5 and wso2esb 4.9. In DSS, I created a DataService to get data from a database. Following the WSO2 Dashboard into DSS, I used the endpoint in my eclipse project (Developer Studio). The xml gerated by DSS is:

<elements xmlns="http://ws.wso2.org/dataservice">
   <row>
      <name>nome1</name>
      <address>rua xalala das xalalas</address>
   </row>
   <row>
      <name>nome2</name>
      <address>ruas rms did sa</address>
   </row>
   <row>
      <name>nome3</name>
      <address>aldoas daso dasodsa</address>
   </row>
</elements>

So, in my ESB project I have this gerated code:

<foreach expression="//elements/row">
    <sequence>
      <payloadFactory media-type="xml">
        <format>
          <p:Insert xmlns:p="http://ws.wso2.org/dataservice">
            <xs:nome xmlns:xs="http://ws.wso2.org/dataservice">$1</xs:nome>
            <xs:endereco xmlns:xs="http://ws.wso2.org/dataservice">$2</xs:endereco>
          </p:Insert>
        </format>
        <args>
          <arg evaluator="xml" expression="/row/name"/>
          <arg evaluator="xml" expression="/row/address"/>
        </args>
      </payloadFactory>
      <log>
        <property name="xalela" value="xalxalxlalxal"/>
      </log>
    </sequence>
  </foreach>

The problem is that it isn't loggin into foreach, in other words, it isn't accessing inside the foreach mediator. What's wrong?


Solution

  • xpath //elements/row return nothing because node "elements" belong to namespace http://ws.wso2.org/dataservice

    try with //ds:element/ds:row and define ds as xmlns:ds="http://ws.wso2.org/dataservice"