I have one procedure like-
create or replace
procedure parse_xml_typetest (p_schema_dir varchar2,
P_SCHEMA_FILE VARCHAR2,P_CREATE_TYPE VARCHAR2 DEFAULT 'N')
is
l_bfile BFILE;
l_clob CLOB;
l_parser dbms_xmlparser.Parser;
l_doc dbms_xmldom.DOMDocument;
l_nl dbms_xmldom.DOMNodeList;
l_n dbms_xmldom.DOMNode;
l_file dbms_xmldom.DOMNodeList;
l_range dbms_xmldom.DOMNodeList;
l_filen dbms_xmldom.DOMNode;
rg_value VARCHAR2(1000);
l_ch dbms_xmldom.DOMNode;
l_rg dbms_xmldom.DOMNode;
BEGIN
l_bfile := BFileName(p_schema_dir, P_SCHEMA_FILE);
dbms_lob.createtemporary(l_clob, cache=>FALSE);
dbms_lob.open(l_bfile, dbms_lob.lob_readonly);
dbms_lob.loadFromFile(dest_lob => l_clob, src_lob => l_bfile, amount => dbms_lob.getLength(l_bfile));
dbms_lob.close(l_bfile);
dbms_session.set_nls('NLS_DATE_FORMAT','''DD-MON-YYYY''');
dbms_session.set_nls('NLS_LANGUAGE','AMERICAN');
l_parser := dbms_xmlparser.newParser;
dbms_xmlparser.parseClob(l_parser, l_clob);
DBMS_OUTPUT.PUT_LINE('TTTETETE');
l_doc := dbms_xmlparser.getDocument(l_parser);
dbms_lob.freetemporary(l_clob);
dbms_xmlparser.freeParser(l_parser);
dbms_xmldom.freeDocument(l_doc);
EXCEPTION
WHEN OTHERS THEN
dbms_output.put_line(sqlcode);
dbms_output.put_line(sqlerrm);
dbms_lob.freetemporary(l_clob);
dbms_xmlparser.freeParser(l_parser);
dbms_xmldom.freedocument(l_doc);
end;
I have a XML-
<Types>
<Type>
<Name>Student</Name>
<Description/>
<Derived>Area</Derived>
<Hidden>FALSE</Hidden>
<Abstract>TRUE</Abstract>
</Type>
</Types>
I am executing same procedure in two database--
EXECUTE parse_xml_typetest('DIR','test.xml','N');
For database with NLS_CHARACTERSET=WE8MSWIN1252 executing successfully but for database with NLS_CHARACTERSET=AL32UTF8 gives error-
ORA-31011: XML parsing failed
ORA-19202: Error occurred in XML processing
LPX-00210: expected '<' instead of 'T'
Error at line 1
Thanks,