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

Re: xml-sax issue



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.
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:
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
-----------------------------------------------------------------------