[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: HTTPAPI XML parsing performance



   If you run the parsing without doing any other processing how long does
   it take? That would give you an idea of how long the processing is
   taking vs the xml parsing.

   On Mon, Jan 21, 2013 at 10:44 AM, Michael Rushton
   <[1]michael.rushton@xxxxxxxxx> wrote:

        I have searched my mailing list for an answer to this but, alas,
     found
        nothing. If I have overlooked an article on this, feel free to
     simply
        point me at it.
        I am successfully extracting data from an XML file in the IFS
     however I
        have a question concerning its performance. The IFS file itself
     is
        approximately 32kb, contains around 1500 tags and takes about 12
        seconds to parse. I am using Expat to do the parsing.
        OS/400 version is V5R3M0
        LIBHTTP is 1.25 Beta 1
        The STMF has a CCSID of 819 although I have tried it using 1252
     with no
        noticeable difference.
        Am I being overly optimistic in thinking that this should be
     processed
        in two or three seconds ?
        Any pointers as to how I might improve the execution time or
     where I
        should look will be gratefully received.
        Code snippets:
        The data structure used to store the data...
         * DS for parsed XML file
        D xVehData        ds                  qualified
         * ... Header
        D  Token                        20A   varying
        D  partnerCode                  20A   varying
        D  serviceID                    20A   varying
        D  userID                       20A   varying
        D  password                     20A   varying
        D  client                       20A   varying
        D  customer                     20A   varying
         * ... Vehicle Master
        D  regNumber                    20A   varying
        D  vin                          20A   varying
        D  firstRegDate                 10A   varying
        etc
        The code used to parse the XML...
        if (http_parse_xml_stmf( ifsObj
                               : HTTP_XML_CALC
                               : *null
                               : %paddr(incoming)
                               : %addr(xVehData) ) < *zero);
        // Notify user of error
        else;
        // Populate screen fields
        endif;
        The "incoming" procedure has the following structure...
        upath = %trimr(uppify(path));  // Uppercase
        utag  =        uppify(tag)  ;  // conversion
        // Header section - - - - - - - - - - - -
        if (%scan(@HEADER: upath) > *zero);
           select;
              when %trimr(utag) = 'TOKEN';
                 xVehData.Token = %trimr(value);
              when %trimr(utag) = 'PARTNERCODE';
                 xVehData.PartnerCode = %trimr(value);
              when %trimr(utag) = 'ISSERVICEID';
                 xVehData.ServiceID = %trimr(value);
              when %trimr(utag) = 'USERID';
                 xVehData.UserID = %trimr(value);
              when %trimr(utag) = 'PASSWORD';
                 xVehData.Password = %trimr(value);
              when %trimr(utag) = 'CLIENT';
                 xVehData.Client = %trimr(value);
              when %trimr(utag) = 'CUSTOMERNUM';
                 xVehData.Customer = %trimr(value);
           endsl;
        etc
        ---------------------------------
        Michael
     --------------------------------------------------------------------
     ---
     This is the FTPAPI mailing list.  To unsubscribe, please go to:
     [2]http://www.scottklement.com/mailman/listinfo/ftpapi
     --------------------------------------------------------------------
     ---

References

   1. mailto:michael.rushton@xxxxxxxxx
   2. http://www.scottklement.com/mailman/listinfo/ftpapi
-----------------------------------------------------------------------
This is the FTPAPI mailing list.  To unsubscribe, please go to:
http://www.scottklement.com/mailman/listinfo/ftpapi
-----------------------------------------------------------------------