Tue Jun 25, 2019 4:30 am
Login Register Lost Password? Contact Us


FORMATXML

Comments and questions related to the Enterprise Control Language

Mon Mar 18, 2019 4:54 pm Change Time Zone

I am writing ECL SOAPCALL where I need to pass a array of string in the SOAP request. I am not getting appropriate response. However I tried FORMATXML to see the request XML is framed correctly from my layout definition. While parsing the node 'arr:string', I am not getting the XML node values in the FORMAT XML output.

Could you please look in ?


Code: Select all
layout := RECORD
      STRING         arrString                            {   XPATH('arr:string'                        )   }   ; 
END ;

   arrstring := RECORD
      DATASET(layout) arrStatusstr {   XPATH('arr:string'                        )   }    ; 
   END ;   

   rStatusCodes      :=    RECORD
      STRING         AfterTimeStamp             {   XPATH('dapp:AfterTimeStamp'      )   }         ;
      arrstring      StatusCodes                  { XPATH('dapp:StatusCodes'            )   }               ;
   END   ;
   
   rRecordReqGetRec      :=    RECORD
      rStatusCodes         RecordReqGetRec                               {   XPATH('dapp:RecordReqGetRec'      )   }                              ;                        
   END   ;
   
   rLex         :=    RECORD
      rRecordReqGetRec          Request             {   XPATH('dapp:Request'                        )   }                              ;
      STRING          dappIDD                         {   XPATH('dapp:IDD'                           )   }         ;   
   END   ;

   rRequest   :=    RECORD
      rLex            Request                           {   XPATH('test:request'                        )   }                              ;
   END   ;
   
   
req := '<ROW>'+
         '<test:request> '+
            '<dapp:IDD>16212321321j321n3kj21j3kn213</dapp:IDD>'+
            '<dapp:Request>'+
               '<dapp:RecordReqGetRec>'+
               '<dapp:AfterTimeStamp>2018-03-11</dapp:AfterTimeStamp>'+
               '<dapp:StatusCodes>'+
                  '<arr:string>NFFF</arr:string>'+
                  '<arr:string>NPPP</arr:string>'+
               '</dapp:StatusCodes>'+
            '</dapp:RecordReqGetRec>'+
         '</dapp:Request>'+
      '</test:request>'+
'</ROW>';   
   
   request1 := DATASET([FROMXML(rRequest,req)],rRequest);
   request1;
ravishankar
 
Posts: 15
Joined: Wed Mar 18, 2015 5:24 am

Tue Mar 26, 2019 8:18 pm Change Time Zone

ravishankar,

The XPATHs in your RECORD structures are the problem. It works correctly this way:
Code: Select all
layout := RECORD
  STRING arrString{XPATH('')}; // get self..
END;
rLex := RECORD
  STRING dappIDD{XPATH('test:request/dapp:IDD')}; 
  STRING  AfterTimeStamp
      {XPATH('test:request/dapp:Request/dapp:RecordReqGetRec/dapp:AfterTimeStamp')};
  DATASET(Layout) StatusCodes
{XPATH('test:request/dapp:Request/dapp:RecordReqGetRec/dapp:StatusCodes/arr:string')};
END;
req := '<ROW>'+
         '<test:request> '+
            '<dapp:IDD>16212321321j321n3kj21j3kn213</dapp:IDD>'+
            '<dapp:Request>'+
               '<dapp:RecordReqGetRec>'+
                  '<dapp:AfterTimeStamp>2018-03-11</dapp:AfterTimeStamp>'+
                  '<dapp:StatusCodes>'+
                     '<arr:string>NFFF</arr:string>'+
                     '<arr:string>NPPP</arr:string>'+
                  '</dapp:StatusCodes>'+
               '</dapp:RecordReqGetRec>'+
            '</dapp:Request>'+
         '</test:request>'+
       '</ROW>';   
   
   FROMXML(rLex,req);
   request1 := DATASET([FROMXML(rLex,req)],rLex);
   request1;


HTH,

Richard
rtaylor
Community Advisory Board Member
Community Advisory Board Member
 
Posts: 1459
Joined: Wed Oct 26, 2011 7:40 pm


Return to ECL

Who is online

Users browsing this forum: Bing [Bot] and 0 guests

cron