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

Re: xml-sax issue



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