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)
Code:
< ? 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>
My procedure
Code:
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;
/
The error I get is

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