View previous topic :: View next topic
|
Author |
Message |
udaysnimje
New User
Joined: 12 Jun 2008 Posts: 12 Location: Pune
|
|
|
|
Hi Following is my code :-
Code: |
057500*
057600 XML PARSE WS-XML-STRING-DATA
057700 PROCESSING PROCEDURE 4000-XML-HANDLER
057800 THRU 4000-EXIT
057900 ON EXCEPTION
058000 IF XML-CODE = +1
058100 MOVE 0 TO XML-CODE
058200 ELSE
058300 SET WS-XML-PARSE-ERR-YES
058400 TO TRUE
059300 PERFORM 9100-ERROR
059400 THRU 9100-EXIT
059500 PERFORM 9999-END
059600 THRU 9999-EXIT
059700 END-IF
059800 NOT ON EXCEPTION
059900 CONTINUE
060000 END-XML.
060100 .
Processing procedure:-
070100 4000-XML-HANDLER.
070200******************************************************************
070300* VARIOUS XML EVENTS ARE IDENTIFIED IN THIS PARAGRAPH. *
070400******************************************************************
070500*
070800*
070900 EVALUATE XML-EVENT
071000 WHEN 'START-OF-ELEMENT'
071100 MOVE XML-TEXT TO WS-CURRENT-ELEMENT
071200 WHEN 'CONTENT-CHARACTERS'
071300 EVALUATE WS-CURRENT-ELEMENT
071400 WHEN 'ERR-CODE'
071500 WHEN 'err-code'
071600 MOVE XML-TEXT
071700 TO WS-ERR-CODE
071800 WHEN 'TRACK-ID'
071900 WHEN 'track-id'
072000 MOVE XML-TEXT
072100 TO WS-TRACK
072200 WHEN 'DA-RESP-CODE'
072300 WHEN 'da-resp-code'
072400 MOVE XML-TEXT
072500 TO WS-DA-RESP
072600 WHEN 'DESC-PAYLD'
072700 WHEN 'desc-payld'
072800 MOVE XML-TEXT
072900 TO WS-DESC-PAYLD
073000 END-EVALUATE
073100 WHEN 'END-OF-ELEMENT'
073200 MOVE SPACES TO WS-CURRENT-ELEMENT
073300 WHEN 'START-OF-DOCUMENT'
073400 COMPUTE WS-XML-DOCUMENT-LENGTH = FUNCTION
073500 LENGTH(XML-TEXT)
073600 WHEN 'END-OF-DOCUMENT'
073700 WHEN 'VERSION-INFORMATION'
073800 WHEN 'ENCODING-DECLARATION'
073900 WHEN 'STANDALONE-DECLARATION'
074000 WHEN 'ATTRIBUTE-NAME'
074100 WHEN 'ATTRIBUTE-CHARACTERS'
074200 WHEN 'ATTRIBUTE-CHARACTER'
074300 WHEN 'START-OF-CDATA-SECTION'
074400 WHEN 'END-OF-CDATA-SECTION'
074500 WHEN 'CONTENT-CHARACTER'
074600 WHEN 'PROCESSING-INSTRUCTION-TARGET'
074700 WHEN 'PROCESSING-INSTRUCTION-DATA'
074800 WHEN 'COMMENT'
074900 WHEN 'EXCEPTION'
075000 COMPUTE WS-XML-DOCUMENT-LENGTH =
075100 FUNCTION LENGTH (XML-TEXT)
075200 WHEN OTHER
075300 SET WS-XML-PARSE-ERR-YES
075400 TO TRUE
076100 PERFORM 9100-ERROR
076200 THRU 9100-EXIT
076300 PERFORM 9999-END
076400 THRU 9999-EXIT
076500 END-EVALUATE.
076600 .
076700 4000-EXIT.
076800 EXIT.
076900 EJECT.
077000* |
My input xml string is :-
Code: |
<dem-config><header><param name="app-id">AAPS</param><param name="req-type">DECISIONING</param><param name="req-fmt">BYTE</param><param name="code-page">cp285</param><param name="is-base64">TRUE</param></header><desc-payld>wsPW1ePZ1tMAAAIcx5OWgoGTQEDE1+JAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEDx8fHx8fHx8fHw</desc-payld><non-desc-payld></non-desc-payld></dem-config> |
XML PARSE runs fine till </dem-config>
After i guess it should encounter XML EVENT as END-OF-DOCUMENT but of this it gives 'EXCEPTION'. with XML-CODE = +1
This if first time I am using parsing so asking this. I searched on Type_Description_Herehttp://publibz.boulder.ibm.com/cgi-bin/bookmgr_OS390/handheld/Connected/BOOKS/IGY3PG20/APPENDIX1.4.1?DT=20040220035836#HDRWQ1092
there I got XML-CODE = +1 as The parser found an invalid character while scanning white space outside element content .
Same way I learned that if we set XML-CODE to 0 we can continue parsing till END-OF-DOCUMENT event.
I am still getting EXCEPTION. What needs to be done to get that?
Please advice if I am doing smething wrong.
My apologies for so much of code lines. |
|
Back to top |
|
|
Marso
REXX Moderator
Joined: 13 Mar 2006 Posts: 1353 Location: Israel
|
|
|
|
Why do you need this "COMPUTE WS-XML-DOCUMENT-LENGTH = ..." ?
Maybe you can simplify and check only what you need:
Code: |
070900 EVALUATE XML-EVENT
071000 WHEN 'START-OF-ELEMENT'
071100 MOVE XML-TEXT TO WS-CURRENT-ELEMENT
071200 WHEN 'CONTENT-CHARACTER'
071200 WHEN 'CONTENT-CHARACTERS'
071300 EVALUATE WS-CURRENT-ELEMENT
071400 WHEN 'ERR-CODE'
...
073000 END-EVALUATE
075200 WHEN OTHER
075300 CONTINUE
076500 END-EVALUATE.
076600 .
076700 4000-EXIT.
076800 EXIT.
|
|
|
Back to top |
|
|
udaysnimje
New User
Joined: 12 Jun 2008 Posts: 12 Location: Pune
|
|
|
|
Thanks Marso.. But that really dosen't solve my problem..
Now new thing I have noticed. after each run of XML-EVENT, program control goes to 4000-EXIT and from there it goes to end of the program and then again back to 4000-XML-HANDLER.
I put the Code in XPED and followed each event. With and without Marso's suggession. Still same response. after changes obviously it was much faster. But still geting EXCEPTION at END.
I looked at the data putting HEX ON there are no charactors other than spaces after end. Dont know why am I geting XML-CODE = +1 ? |
|
Back to top |
|
|
|