Creating XML with DBMS_XMLDOM

Creating XML with DBMS_XMLDOM data passed as CLOB
function XMLBuilder return clob is
  doc            DBMS_XMLDOM.DOMDocument; -- Document object
  rootElement    DBMS_XMLDOM.DOMElement; -- Root element of parameters
  paramsElement1 DBMS_XMLDOM.DOMElement; -- Level 1 element 
  paramsElement2 DBMS_XMLDOM.DOMElement; -- Level 2 element
  node           DBMS_XMLDOM.DOMNode; -- Node
  c              CLOB;
  -- Cursor for sequential generation of elements
  cursor cur is
    select rownum from all_users where rownum < 5;
  x integer; -- Variable to store cursor value
begin
  doc         := dbms_xmldom.createDocument('http://www.w3.org/2001/XMLSchema',
                                            null,
                                            null);
  rootElement := DBMS_XMLDOM.createElement(doc, 'ROOT'); -- Root element
  node        := DBMS_XMLDOM.appendChild(DBMS_XMLDOM.makeNode(doc),
                                         DBMS_XMLDOM.makeNode(rootElement));
  DBMS_XMLDOM.setAttribute(rootElement, 'param1', 1); -- Root element attributes    
  DBMS_XMLDOM.setAttribute(rootElement, 'param2', 'v');
  -- Level 1
  paramsElement1 := DBMS_XMLDOM.createElement(doc, 'LEVEL1');
  -- paramsElement1 is a child of rootElement
  node := DBMS_XMLDOM.appendChild(DBMS_XMLDOM.makeNode(rootElement),
                                  DBMS_XMLDOM.makeNode(paramsElement1));
  -- Level 1 element nodes
  open cur;
  loop
    fetch cur
      into x;
    exit when cur%NOTFOUND;
    paramsElement2 := DBMS_XMLDOM.createElement(doc, 'UNIT');
    helpNode := DBMS_XMLDOM.appendChild(DBMS_XMLDOM.makeNode(paramsElement1),
                                        DBMS_XMLDOM.makeNode(paramsElement2));
    DBMS_XMLDOM.setAttribute(paramsElement1, 'param', x);
  end loop;
  close cur;
  dbms_lob.createtemporary(c, true, dbms_lob.session);
  c := 'dddd'; -- This will not work
  dbms_xmldom.writeToClob(doc, c);
  return('' || chr(10) || c);
end;
Result:
<root param1="1" param2="v">
  <level1>
   <unit param="1"/>
   <unit param="2"/>
   <unit param="3"/>
   <unit param="4"/> 
  </level1>
</root> 
ceo@thomsonslegacy.com

We customize Oracle e-Business Suite R12 modules with Oracle Applications Framework and providing Oracle ADF based solutions


© Thomsonslegacy.com, 2025.
If you publish the materials of the site, the reference to the source is obligatory. The site uses cookies.