hi
I am not getting there again...
XML file (i have put spaces in the open and close tags here to display properly in this forum)
My procedureCode:< ? xml version="1.0" encoding="UTF-8" standalone="no" ? > < Access port="4355" filter="all" host="localhost" type="users" user="Administrator" baseDN="o=cn, c=cb" namespace="default" > < User email="[email protected]" phone="+99 999 999999" first_name="" name="Administrator" last_name="" > < BasicSignon >Administrator< / BasicSignon> < OSSignon>devadmin< / OSSignon> < Userclasses > < Userclass name="Root User Class" / > < / Userclasses > < / User> < / Access>
The error I get isCode:CREATE OR REPLACE PROCEDURE zbis_users_load AS l_bfile BFILE; l_clob CLOB; l_parser xmlparser.parser; l_doc xmldom.domdocument; l_attrs xmldom.domnamednodemap; l_attr xmldom.domnode; l_nl xmldom.domnodelist; l_n xmldom.domnode; l_text VARCHAR2 (32767); lemail VARCHAR2 (400); lphone VARCHAR2 (400); lfirstname VARCHAR2 (400); lname VARCHAR2 (400); llastname VARCHAR2 (400); lbasicsignon VARCHAR2 (400); lossignon VARCHAR2 (400); luserclass VARCHAR2 (400); BEGIN l_bfile := BFILENAME ('LOG', 'users.xml'); DBMS_OUTPUT.put_line (SQLERRM); DBMS_LOB.createtemporary (l_clob, CACHE => FALSE); DBMS_LOB.OPEN (l_bfile, DBMS_LOB.lob_readonly); DBMS_LOB.loadfromfile (l_clob, l_bfile, DBMS_LOB.getlength (l_bfile), 1,1); DBMS_LOB.CLOSE (l_bfile); -- make sure implicit date conversions are performed correctly DBMS_SESSION.set_nls ('NLS_DATE_FORMAT', '''DD-MON-YYYY'''); -- Create a parser. l_parser := xmlparser.newparser; -- Parse the document and create a new DOM document. xmlparser.parseclob (l_parser, l_clob); l_doc := xmlparser.getdocument (l_parser); -- Free resources associated with the Parser now it is no longer needed. xmlparser.freeparser (l_parser); l_n := xslprocessor.selectsinglenode (xmldom.makenode (l_doc), '/Access/User'); l_attrs := xmldom.getattributes (l_n); FOR cur_attr IN 0 .. xmldom.getlength (l_attrs) - 1 LOOP l_attr := xmldom.ITEM (l_attrs, cur_attr); IF xmldom.getnodename (l_attr) = 'email' THEN lemail := xmldom.getnodevalue (l_attr); END IF; IF xmldom.getnodename (l_attr) = 'phone' THEN lphone := xmldom.getnodevalue (l_attr); END IF; IF xmldom.getnodename (l_attr) = 'first_name' THEN lfirstname := xmldom.getnodevalue (l_attr); END IF; IF xmldom.getnodename (l_attr) = 'name' THEN lname := xmldom.getnodevalue (l_attr); END IF; IF xmldom.getnodename (l_attr) = 'last_name' THEN llastname := xmldom.getnodevalue (l_attr); END IF; --DBMS_OUTPUT.put_line(xmldom.getNodeName(l_attr) || '=' || xmldom.getNodeValue(l_attr)); END LOOP; l_n := xslprocessor.selectsinglenode (xmldom.makenode (l_doc), '/Access/User/BasicSignon'); lbasicsignon := xmldom.getnodevalue (xmldom.getfirstchild (l_n)); --DBMS_OUTPUT.put_line(xmldom.getNodeName(l_n) || '=' || xmldom.getNodeValue(xmldom.getFirstChild(l_n))); l_n := xslprocessor.selectsinglenode (xmldom.makenode (l_doc), '/Access/User/OSSignon'); lossignon := xmldom.getnodevalue (xmldom.getfirstchild (l_n)); -- Get a list of all the EMP nodes in the document using the XPATH syntax. l_nl := xslprocessor.selectnodes (xmldom.makenode (l_doc), '/Access/User/Userclasses/Userclass'); -- Loop through the list and create a new record in a tble collection -- for each EMP record. FOR cur_uc IN 0 .. xmldom.getlength (l_nl) - 1 LOOP l_n := xmldom.ITEM (l_nl, cur_uc); l_attrs := xmldom.getattributes (l_n); l_attr := xmldom.ITEM (l_attrs, 0); luserclass := xmldom.getnodevalue (l_attr); -- DBMS_OUTPUT.put_line(xmldom.getNodeName(l_attr) || '=' || xmldom.getNodeValue(l_attr)); INSERT INTO zusers (basic_signon, os_signon, first_name, last_name, disp_name, user_email, user_phone, user_class ) VALUES (lbasicsignon, lossignon, lfirstname, llastname, lname, lemail, lphone, luserclass ); END LOOP; -- Free any resources associated with the document now it -- is no longer needed. xmldom.freedocument (l_doc); END; /
SQL> exec zbis_users_load
ORA-0000: normal, successful completion
BEGIN zbis_users_load; END;
*
ERROR at line 1:
ORA-20100: Error occurred while parsing: Start of root element expected.
ORA-06512: at "SYS.XMLPARSER", line 22
ORA-06512: at "SYS.XMLPARSER", line 103
ORA-06512: at "ADDPM.ZBIS_USERS_LOAD", line 44
ORA-06512: at line 1
regards,
Sudhi




Reply With Quote