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

Re: xml-sax issue



   that's looks like a problem of a variable length string not correctly
   defined...
   mismatch in a definition of a program/procedure ?
   Paul
   From:        "RPG List" <rpglist@xxxxxxxxxxx>
   To:        "HTTPAPI and FTPAPI Projects"
   <ftpapi@xxxxxxxxxxxxxxxxxxxxxx>
   Date:        08/09/2015 19:42
   Subject:        Re: xml-sax issue
   Sent by:        ftpapi-bounces@xxxxxxxxxxxxxxxxxxxxxx
     __________________________________________________________________

   John,
   I don't recall off the top of my head.  He tried sending it as UTF-16
   but
   its defaulting to 8 so I'm not sure if that's the problem or not.
   I recompiled the srvpgm and stubs and created the sample program, in
   debug
   when I check the xml value immediately following the web service call
   I'm
   getting a weird character  Þ<MMMProcess>
   and it is starting in position 2.  I don't recall seeing this before.
   Ideas?
   > XML-INTO is usually a lot less work than XML-SAX unless you only want
   a
   > small portion of the data. From what you posted earlier it didn't
   look
   > that complex - what problems did you encounter with XML-INTO?
   >
   >
   > On Sep 8, 2015, at 2:21 PM, RPG List <rpglist@xxxxxxxxxxx> wrote:
   >
   >> Scott the 3:5000 is a typo, that should be a 1.
   >>
   >> I am using XML-SAX because I wasn't able to get XML-INTO to work.
   >> However, I found out this morning that the XML is coming in as
   UTF-8.  I
   >> asked him to change that to 16 for a test, since I recall reading
   that
   >> RPG
   >> does not like 8.
   >>
   >> I'm open to suggestions to make this learning curve easier
   >>
   >>
   >>> Dutch,
   >>>
   >>> You are doing this:
   >>>
   >>> xml = %trim(%subSt(GetResponse:3:5000));
   >>>
   >>> Can you explain why you are doing that %subst?  Wouldn't that cause
   the
   >>> '<M' at the start of the XML document to be chopped off, making
   this an
   >>> invalid document?
   >>>
   >>> The %trim() is not necessary, but shouldn't hurt anything.
   >>>
   >>> Can you explain why you want to use XML-SAX here instead of
   XML-INTO or
   >>> the XML parser included with HTTPAPI?  (Which is a wrapper around
   >>> Expat)
   >>>
   >>>
   >>> On 9/4/2015 4:34 PM, RPG List wrote:
   >>>> Scott,
   >>>> I'm not sure we don't have another problem.  Here's why when I
   step
   >>>> through the xmlhandler, I get the start_document on the first
   read,
   >>>> and
   >>>> then I get end_document on the second read.  That's it.  Its
   almost as
   >>>> though its never seeing the data further.  I ran a test using the
   >>>> following:
   >>>>
   >>>> XML = '<xmlTest>+
   >>>>                <name type="author">AS400 Sample Code/name>+
   >>>>                </xmlTest>';
   >>>>
   >>>> that worked.
   >>>>
   >>>> Here is what the xml document looks like coming in:
   >>>>
   >>>> '<MMMProcess><Results><Claim>8104550</Claim><Amount>1995.83</'
   >>>> 'Amount><Code>7320</Code><Xrg>53</Xrg><MEANLOS2>2</MEAN'
   >>>> 'LOS2><Error_Code>0</Error_Code></Results></MMMProcess>'
   >>>>
   >>>>
   >>>> I just can't find what's wrong with the xml..
   >>>>
   >>>>
   >>>>> Dutch,
   >>>>>
   >>>>> The XML processing instructions ("header" as you call it) are
   >>>>> optional.
   >>>>> They are not required.
   >>>>>
   >>>>> The problem is what I said in my first reply to you.  Please read
   the
   >>>>> article I linked to so you can learn how XML-SAX works.
   >>>>>
   >>>>> -SK
   >>>>>
   >>>>>
   >>>>> On 9/4/2015 3:18 PM, RPG List wrote:
   >>>>>> one additional issue I saw this morning Scott and maybe this is
   the
   >>>>>> problem, the incoming XML does not have what I would call a
   standard
   >>>>>> header:
   >>>>>>
   >>>>>> IE: it does not have a version or description that I see in most
   xml
   >>>>>> documents, maybe that's needed or maybe not?
   >>>>>>
   >>>>>>
   >>>>>>> Dutch,
   >>>>>>>
   >>>>>>> This looks an awful lot like a program that I wrote a long time
   ago
   >>>>>>> to
   >>>>>>> print the XML events.  I would not recommend using this to
   actually
   >>>>>>> parse a document -- to parse with XML-SAX you're going to need
   to
   >>>>>>> create
   >>>>>>> a stack of XML elements (implemented in RPG as an array, most
   >>>>>>> likely)
   >>>>>>> and keep track of the current XML element you're working on,
   etc.
   >>>>>>> There
   >>>>>>> was another program included in that same article called
   "CustXml"
   >>>>>>> that
   >>>>>>> demonstrates this -- that program would be a better starting
   point.
   >>>>>>>
   [1]http://iprodeveloper.com/print/rpg-programming/rpgs-xml-sax-opcode
   >>>>>>>
   >>>>>>> (use the "print" option to format the code better, Penton media
   has
   >>>>>>> screwed up the code figures in their article archive)
   >>>>>>>
   >>>>>>> Based on what you've shown us, the only thing you'd get in your
   >>>>>>> string
   >>>>>>> is the name of the XML tag you're parsing.  (Since that's
   what's
   >>>>>>> pointed
   >>>>>>> to by "string" during the XML_START_ELEMENT event.)
   >>>>>>>
   >>>>>>> You say you're getting nothing at all...?  Since you're getting
   it
   >>>>>>> from
   >>>>>>> the 'value' field, you'd need to show us the definition and/or
   code
   >>>>>>> that
   >>>>>>> populates 'value' for us to see how that works.  Funny that you
   >>>>>>> omitted
   >>>>>>> that part of the code considering that your question is about
   it?
   >>>>>>>
   >>>>>>> Also, is this part of a program that uses HTTPAPI or FTPAPI?
   If
   >>>>>>> so,
   >>>>>>> I
   >>>>>>> guess we can discuss it here...   if not, however, this really
   >>>>>>> doesn't
   >>>>>>> belong on this mailing list.
   >>>>>>>
   >>>>>>> -SK
   >>>>>>>
   >>>>>>>
   >>>>>>> On 9/3/2015 9:17 PM, RPG List wrote:
   >>>>>>>> I am attempting to parse out the data I'm getting from a web
   >>>>>>>> service
   >>>>>>>> and
   >>>>>>>> I'm having a little trouble.
   >>>>>>>>
   >>>>>>>> I'm using the following as my to the handler:
   >>>>>>>>
   >>>>>>>>      xml = %trim(%subSt(GetResponse:3:5000));
   >>>>>>>>      xml-sax %handler(xmlHandler: ignoreMe)
   >>>>>>>>         %XML(xml: 'doc=string');
   >>>>>>>>
   >>>>>>>> GetResponse has the full xml string I'm expecting.
   >>>>>>>>
   >>>>>>>> my xmlhandler is defined as follows:
   >>>>>>>>
   >>>>>>>> P xmlHandler      b
   >>>>>>>> D                 pi            10i 0
   >>>>>>>> D ignore                         1a
   >>>>>>>> D event                         10i 0 value
   >>>>>>>> D   string                        *   value
   >>>>>>>> D   stringLen                   20i 0 value
   >>>>>>>> D   exceptionId                 10i 0 value
   >>>>>>>>
   >>>>>>>> I then have the following code in the procedure:
   >>>>>>>>
   >>>>>>>> OutputXML.name = XML_Event_Name(event);
   >>>>>>>> OutputXML.data = *blanks;
   >>>>>>>>
   >>>>>>>> select;
   >>>>>>>> when string=*null or stringlen<1;
   >>>>>>>>      // no string given...
   >>>>>>>> when stringlen>%size(value);
   >>>>>>>>      OutputXML.data = '** string length invalid';
   >>>>>>>> other;
   >>>>>>>>      OutputXML.data = %subst(value:1:stringlen);
   >>>>>>>> endsl;
   >>>>>>>>
   >>>>>>>> // Change Current XML group if applicable
   >>>>>>>> Select;
   >>>>>>>>      When OutputXML.name = 'XML_START_ELEMENT';
   >>>>>>>>
   >>>>>>>>
   >>>>>>>>
   >>>>>>>>
   >>>>>>>> The problem is outputXML.data never has a value that I can
   see.
   >>>>>>>> Am
   >>>>>>>> I
   >>>>>>>> doing something wrong or am I missing a step?
   >>>>>>>>
   >>>>>>>>
   >>>>>>>>
   >>>>>>>>
   >>>>>>>>
   >>>>>
   >>>
   >>>
   -----------------------------------------------------------------------
   >>> This is the FTPAPI mailing list.  To unsubscribe, please go to:
   >>> [2]http://www.scottklement.com/mailman/listinfo/ftpapi
   >>>
   -----------------------------------------------------------------------
   >>>
   >>
   >>
   >>
   -----------------------------------------------------------------------
   >> This is the FTPAPI mailing list.  To unsubscribe, please go to:
   >> [3]http://www.scottklement.com/mailman/listinfo/ftpapi
   >>
   -----------------------------------------------------------------------
   >
   > Jon Paris
   >
   > [4]www.partner400.com
   > [5]www.SystemiDeveloper.com
   >
   >
   -----------------------------------------------------------------------
   > This is the FTPAPI mailing list.  To unsubscribe, please go to:
   > [6]http://www.scottklement.com/mailman/listinfo/ftpapi
   >
   -----------------------------------------------------------------------
   >
   >
   -----------------------------------------------------------------------
   This is the FTPAPI mailing list.  To unsubscribe, please go to:
   [7]http://www.scottklement.com/mailman/listinfo/ftpapi
   -----------------------------------------------------------------------

References

   1. http://iprodeveloper.com/print/rpg-programming/rpgs-xml-sax-opcode
   2. http://www.scottklement.com/mailman/listinfo/ftpapi
   3. http://www.scottklement.com/mailman/listinfo/ftpapi
   4. file://localhost/tmp/www.partner400.com
   5. file://localhost/tmp/www.SystemiDeveloper.com
   6. http://www.scottklement.com/mailman/listinfo/ftpapi
   7. 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
-----------------------------------------------------------------------