Err: ORA-31011: XML parsing failed
YLNAug 12 2009 — edited Aug 13 2009Hi,
While inserting XML in table ,I was facing below problem,Pls suggest a way out within code.
Your help is appreciate.
I am using Oracle version - 10.2.0.2.0
Err: ORA-31011: XML parsing failed
ORA-19202: Error occurred in XML processing
LPX-00234: namespace prefix "xsi" is not declared
Error at line 1
ORA-06512: at "SYS.XMLTYPE", line 254
ORA-06512: at line 1
--Step1
CREATE TABLE EMP (EMPCODE NUMBER(8),EMPNAME VARCHAR2(100),EMPDEPTNO NUMBER(8),EMPSAL NUMBER(34,2));
/
--Step2
BEGIN
FOR X IN (SELECT * FROM USER_OBJECTS S WHERE ROWNUM<=50)
LOOP
INSERT INTO EMP VALUES (X.OBJECT_ID,X.OBJECT_NAME,20,X.OBJECT_ID+10);
END LOOP;
COMMIT;
END;
/
--Step3
create table EMPXML(XMLCLOB XMLTYPE);
/
--Step4
DECLARE
v_xmldata CLOB;
v_tmpdata CLOB;
v_xmltype XMLTYPE;
BEGIN
dbms_lob.createtemporary(v_tmpdata, false);
v_xmldata := '<?xml version="1.0" encoding="UTF-8" ?>';
SELECT Xmlelement("Employee",
Xmlattributes('http://ns.oracle.com.tw/XSD/ORACLE/ESB/Message/EMF/ServiceEnvelope" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance' AS
"xmlns:ns0",
'http://ns.oracle.com.tw/XSD/ORACLE/ESB/Message/EMF/ServiceEnvelope ServiceEnvelope.xsd>' AS
"xsi:schemaLocation"),
Xmlagg(Xmlforest(Empcode AS "EmpID",
Empname AS "EmpName",
Empsal AS "EmpSal"))) INTO v_xmltype
FROM Emp
WHERE Empdeptno = 20 ;
SELECT v_xmltype.getCLOBVal() INTO v_tmpdata FROM dual;
dbms_lob.append(v_xmldata, v_tmpdata);
BEGIN
INSERT INTO EMPXML VALUES(xmltype(v_xmldata));
EXCEPTION WHEN OTHERS THEN
dbms_output.put_line('Err: '|| SQLERRM);
END;
END;
/
--Step5
SELECT * FROM empxml;
/
--step6
DROP TABLE EMP PURGE;
/
--Step7
DROP TABLE EMPXML PURGE;
/
Thanks and regards,
Yogesh Nagle
India