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