ORA-31011: XML parsing failed, can anyone tel me wats wrong in this code
527733Nov 17 2009 — edited Dec 10 2009Hi 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 ..