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

Re: xml-sax issue



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