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