[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
-----------------------------------------------------------------------