[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: Query on http_parse_xml_string
Hello Abhijit,
Here's the reason why you get the error:
exec sql values upper(trim(:DataIn)) into :xmlData;
See that upper() function? It converts the data to uppercase.
XML is a case-sensitive environment. While & is a predefined and
well-known entity, & is not. In XML uppercase is not treated as the
same thing as lowercase.
On 1/12/2012 7:37 PM, Abhijit Fulambrikar wrote:
> Hi Scott,
>
> Thank you so much for your help. I took your program and it works great
> on my system as well.
> The parser is able to parse the special characters.
>
> Now the difference in my program is that the variable DataIn is declared
> as sqltype(clob:4096000).
>
> Also my program accepts the DataIn as an input parameter.
>
> I have broken your program in two programs and made it similar to my
> program with string as clob type.
> I am able to replicate the issue.
> Attaching the programs below. You should be able to replicate it on your
> system.
>
> Actually we had declares a variable as clob in copy book and later all
> other variables declared
> in program are referencing the same definition (LikeDS). We did this
> because it would be easy to change the type of the variable if required.
>
> Thank you,
> Abhijit
>
>
> On Thu, Jan 12, 2012 at 2:35 PM, Scott Klement <sk@xxxxxxxxxxxxxxxx
> <mailto:sk@xxxxxxxxxxxxxxxx>> wrote:
>
> 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 <mailto: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@xxxxxxxxxxx
> <mailto: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
> <http://www.scottklement.com/mailman/listinfo/ftpapi>
>
>
> ------------------------------__------------------------------__--------
> ---
> References
>
> 1. mailto:[4]abhijit.fulambrikar@xxxxxxxxxxx
> <mailto:abhijit.fulambrikar@xxxxxxxxx>
> 2.
> [5]http://www.scottklement.__com/mailman/listinfo/ftpapi
> <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
> <http://www.scottklement.com/mailman/listinfo/ftpapi>
>
> ------------------------------__------------------------------__--------
> ---
>
> References
>
> 1. mailto:alan0307d@xxxxxxxxx <mailto:alan0307d@xxxxxxxxx>
> 2. mailto:abhijit.fulambrikar@xxxxxxxxxxx
> <mailto:abhijit.fulambrikar@xxxxxxxxx>
> 3. http://www.scottklement.com/__mailman/listinfo/ftpapi
> <http://www.scottklement.com/mailman/listinfo/ftpapi>
> 4. mailto:abhijit.fulambrikar@xxxxxxxxxxx
> <mailto:abhijit.fulambrikar@xxxxxxxxx>
> 5. http://www.scottklement.com/__mailman/listinfo/ftpapi
> <http://www.scottklement.com/mailman/listinfo/ftpapi>
> 6. http://www.scottklement.com/__mailman/listinfo/ftpapi
> <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
> <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
> -----------------------------------------------------------------------
>
>
-----------------------------------------------------------------------
This is the FTPAPI mailing list. To unsubscribe, please go to:
http://www.scottklement.com/mailman/listinfo/ftpapi
-----------------------------------------------------------------------