[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: Query on http_parse_xml_string
Hi Abhijit,
Please understand this: In order to help you, we need enough
information to reproduce the problem.
I've spent a considerable amount of time (more than an hour) trying to
reproduce your problem, but I just can't get it to fail as you describe.
I need to know what you're doing that makes it fail.
Here's what I'd like to do:
1) I'll attach the source code for my "test" program to this message.
My program is a complete program that you can load/run on your system
(just copy/paste it to a source member and compile it.)
2) I need you to reply to this message, and do me the same courtesy.
Attach a complete program (preferably, by modifying mine) that I can
copy/paste to a source member, compile and run. Your copy should
reproduce the Expat error that you described.
Thanks!
On 1/12/2012 10:33 AM, Abhijit Fulambrikar wrote:
Thanks Alan.
This is how I am creating the test data in the SQLRPG program.
exec sql
values '<PopulateComments> +
<ServiceRequest>406725</ServiceRequest> +
<Comment> +
<Line>1</Line> +
<CreateDate>20111227</CreateDate> +
<CreateTime>145232</CreateTime> +
<Type>CAUSE</Type> +
<Text>Engine oil leak& test</Text> +
</Comment> +
<Comment> +
<Line>2</Line> +
<CreateDate>20111227</CreateDate> +
<CreateTime>145232</CreateTime> +
<Type>CORRECTION</Type> +
<Text>Replace engine oil and other parts</Text> +
</Comment> +
</PopulateComments>' into :DataIn;
Input data
XMLDATA.@XMLDATA_DATA =
....5...10...15...20...25...30...35...40...45...50...55...60
1 '<POPULATECOMMENTS> <SERVICEREQUEST>406725</SERVICEREQUEST> <'
61 'COMMENT> <LINE>1</LINE> <CREATEDATE>20111227</CREATEDATE> <C'
121 'REATETIME>145232</CREATETIME> <TYPE>CAUSE</TYPE> <TEXT>ENGIN'
181 'E OIL LEAK& TEST</TEXT> </COMMENT> <COMMENT> <LINE>2</L'
241 'INE> <CREATEDATE>20111227</CREATEDATE> <CREATETIME>145232</C'
301 'REATETIME> <TYPE>CORRECTION</TYPE> <TEXT>REPLACE ENGINE OIL '
361 'AND OTHER PARTS</TEXT> </COMMENT> </POPULATECOMMENTS> '
421 ' '
Error
DATAOUT.@XMLDATA_DATA =
....5...10...15...20...25...30...35...40...45...50...55...60
1 '<?xml version="1.0"?><POPULATECOMMENTS><Error>XML parse
fail'
61 'ed at line 1, col 191: undefined
entity</Error></POPULATECOM'
121 'MENTS>
'
181 '
'
241 '
'
When I change the Input Data and put& instead of "&" , below
error is returned
DATAOUT.@XMLDATA_DATA =
....5...10...15...20...25...30...35...40...45...50...55...60
1 '<?xml version="1.0"?><POPULATECOMMENTS><Error>XML parse fail'
61 'ed at line 1, col 192: not well-formed (invalid token)</Erro'
121 'r></POPULATECOMMENTS> '
Is the function "http_parse_xml_string" capable of handling the special
characters.
Thanks for your help.
Thanks& Regards,
Abhijit
On Wed, Jan 11, 2012 at 6:11 PM, Alan Campin<[1]alan0307d@xxxxxxxxx>
wrote:
The& is the same as putting an& in the xml because& are
special
characters I believe. The problem is that I don't think the EXPAT
parser that Scott uses recognizes the& special strings like
",
etc.
When I dealt with problem it put the xml to a stream file and used
XML-SAX to parse it and that recognized the special characters. I
think
this may be occurring because you have an xml file embedded inside
the
main file so you have to extract the files from inside and then
parse
it separately. This is not a problem if the resulting file is
relatively small. It gets trickee if the file embedded inside is
very
big and won't fit in a variable. Then you need to write to a
stream
file.
Would need to see the entire XML.
On Wed, Jan 11, 2012 at 4:24 PM, Abhijit Fulambrikar
<[1][2]abhijit.fulambrikar@xxxxxxxxx> wrote:
Hi,
I have a question regarding the parsing of special character's in
XML.
I am using "http_parse_xml_string" to parse the XML string.
Please
see
the
code below
xmlError = http_parse_xml_string(%addr(xmlData.@xmlData_Data):
xmlData.@xmlData_Len: 0: *null: xmlHandler: *null)<> 0;
if xmlError;
xmlAddRootAndElement(Process: ERROR: http_error());
endif;
The XML data which I am sending has the below tag which has
special
character "&". The character is formatted as"&" as shown
below
<Text>Replace engine oil& other parts</Text>
The error which is returned from http_parse_xml_string is as
below
XML parse failed at line 1, col 349: undefined entity
When I tried with the below data
<Text>Replace engine oil& other parts</Text>
I get the error as
XML parse failed at line 1, col 350: not well-formed (invalid
token)
Please let me know if I am following some incorrect process.
Thanks for
your help.
Regards,
Abhijit
--------------------------------------------------------------------
---
This is the FTPAPI mailing list. To unsubscribe, please go to:
[2][3]http://www.scottklement.com/mailman/listinfo/ftpapi
--------------------------------------------------------------------
---
References
1. mailto:[4]abhijit.fulambrikar@xxxxxxxxx
2. [5]http://www.scottklement.com/mailman/listinfo/ftpapi
--------------------------------------------------------------------
---
This is the FTPAPI mailing list. To unsubscribe, please go to:
[6]http://www.scottklement.com/mailman/listinfo/ftpapi
--------------------------------------------------------------------
---
References
1. mailto:alan0307d@xxxxxxxxx
2. mailto:abhijit.fulambrikar@xxxxxxxxx
3. http://www.scottklement.com/mailman/listinfo/ftpapi
4. mailto:abhijit.fulambrikar@xxxxxxxxx
5. http://www.scottklement.com/mailman/listinfo/ftpapi
6. 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
-----------------------------------------------------------------------
H DFTACTGRP(*NO) BNDDIR('HTTPAPI')
/include httpapi_h
D DataIn s 1000a varying
D xmlError s 1n
D msgno s 10i 0 inz(0)
D log s 68a dim(1000)
/free
exec sql
values '<PopulateComments> +
<ServiceRequest>406725</ServiceRequest> +
<Comment> +
<Line>1</Line> +
<CreateDate>20111227</CreateDate> +
<CreateTime>145232</CreateTime> +
<Type>CAUSE</Type> +
<Text>Engine oil leak & test</Text> +
</Comment> +
<Comment> +
<Line>2</Line> +
<CreateDate>20111227</CreateDate> +
<CreateTime>145232</CreateTime> +
<Type>CORRECTION</Type> +
<Text>Replace engine oil & other parts</Text> +
</Comment> +
</PopulateComments>' into :DataIn;
xmlError = http_parse_xml_string( %addr(dataIn: *data)
: %len(dataIn)
: 0
: *null
: %paddr(xmlHandler)
: *null ) <> 0;
if xmlError;
msgno += 1;
log(msgno) = http_error();
endif;
ShowLog();
*inlr = *on;
/end-free
P xmlHandler B
D PI
D UserData * value
D depth 10I 0 value
D name 1024A varying const
D path 24576A varying const
D value 65535A varying const
D attrs * dim(32767)
D const options(*varsize)
/free
msgno += 1;
log(msgno) = name + '=' + value;
/end-free
P E
P ShowLog B
D ShowLog PI
D QUILNGTX PR ExtPgm('QUILNGTX')
D text 68a dim(1000) const
D length 10i 0 const
D msgid 7a const
D qualmsgf 20a const
D errorCode 20i 0 const
/free
QUILNGTX( log
: msgno * %len(log(1))
: *blanks
: *blanks
: 0 );
msgno = 0;
/end-free
P E
-----------------------------------------------------------------------
This is the FTPAPI mailing list. To unsubscribe, please go to:
http://www.scottklement.com/mailman/listinfo/ftpapi
-----------------------------------------------------------------------