Skip to Main Content

SQL & PL/SQL

Announcement

For appeals, questions and feedback about Oracle Forums, please email oracle-forums-moderators_us@oracle.com. Technical questions should be asked in the appropriate category. Thank you!

ORA-31011: XML parsing failed, can anyone tel me wats wrong in this code

527733Nov 17 2009 — edited Dec 10 2009
Hi All,

I am trying to parse an XML document , for that I have written some code on XML parsing.

I am trying to pass an XML document,which will be in one format , I can't change that.

Now I have to get values at individual elements like FROM_USERID and TO_USERID and MESSAGE.

Following is the code

create or replace procedure myparsing is
new_msg_str varchar2(4000);
new_msg_xml XMLType;
v_from_user varchar2(8);
v_to_user varchar2(8);
v_msg_tmp varchar2(4000);
v_msg varchar2(4000);
payloadxml varchar2(2000);
mymsg chat.objmessage_typ;
n number;

function getvalueat (
nodelist dbms_xmlDom.DOMNodeList,xPath varchar2)
return varchar2 is
begin
return dbms_xslprocessor.valueOf(dbms_xmldom.item(nodelist,2),
xpath);
end getvalueat;

procedure parse(xmlpayload varchar2) is
doc dbms_xmlDom.DOMDocument;
parser dbms_xmlparser.Parser;
nodeList dbms_xmlDom.DOMNodelist;
testdoc varchar2(2000) ;
begin
parser := dbms_xmlparser.newParser;
dbms_xmlparser.parseBuffer(parser,xmlpayload);
doc := dbms_xmlparser.getDocument(parser);
dbms_xmlparser.freeParser(parser);
nodeList := dbms_xslprocessor.selectNodes(
dbms_xmlDom.makeNode(doc),'/CHAT.OBJMESSAGE_TYP');
mymsg := objmessage_typ(null, null, null);
mymsg.from_userid := getValueAt(nodeList,'FROM_USERID');
mymsg.to_userid := getValueAt(nodeList,'TO_USERID');
mymsg.message := getValueAt(nodeList,'MESSAGE');
end parse;

begin
payloadXml := '<?xml version="1.0"?>

<CHAT>OBJMESSAGE_TYP><FROM_USERID>abcdabcd</FROM_USERID>

<TO_USERID>asdfghjk</TO_USERID><MESSAGE>HI THIS IS SOME

MESSAGE</MESSAGE></CHAT.OBJMESSAGE_TYP>';
parse(payloadXml);
v_from_user := mymsg.from_userid;
v_to_user := mymsg.to_userid;
v_msg := mymsg.message;
mymsg := objmessage_typ(null, null, null);
v_from_user :='';
v_to_user :='';
v_msg :='';
end;


I am getting error

SQL> begin
2 myparsing();
3 end;
4 /
begin
*
ERROR at line 1:
ORA-31011: XML parsing failed
ORA-19202: Error occurred in XML processing
LPX-00231: invalid character 46 ('.') found in a Name or Nmtoken
Error at line 4
ORA-06512: at "XDB.DBMS_XMLPARSER", line 156
ORA-06512: at "CHAT.MYPARSING", line 27
ORA-06512: at "CHAT.MYPARSING", line 43
ORA-06512: at line 2


Can anyone tel me whats wrong in this code and things which I need to do

TIA ..
This post has been answered by Dom Brooks on Nov 17 2009
Jump to Answer
Comments
Locked Post
New comments cannot be posted to this locked post.
Post Details
Locked on Jan 7 2010
Added on Nov 17 2009
8 comments
1,636 views