我正在尝试使用函数生成以下格式xml:
XML
<?xml version="1.0" encoding="UTF-8"?>
<OUTPUT xmlns:xsi="http://www.w3.org">
....
功能:
FUNCTION f_get_details(
p_employee_id NUMBER)
RETURN XMLTYPE
IS
v_xmltype xmltype;
--
main_node xmldom.DOMnode;
ROOT_NODE XMLDOM.DOMNODE;
root_elmt xmldom.domelement;
l_con_node dbms_xmldom.DOMnode;
--
BEGIN
l_domdoc := xmldom.newDomDocument;
--
main_node := xmldom.makenode(l_domdoc);
root_elmt := xmldom.createelement(l_domdoc, 'OUTPUT');
--
xmldom.setattribute(elem => root_elmt, name=> 'xmlns:xsi', newvalue=>'http://www.w3.org');
--
v_xmltype := dbms_xmldom.getXMLType(l_domdoc);
dbms_xmldom.freeDocument(l_domdoc);
return v_xmltype;
END f_get_details;
函数以正确的格式生成xml但我无法提及输出节点的命名空间。我应该怎么解决呢?
我在这行代码中给出了命名空间:
xmldom.setattribute(elem => root_elmt, name=> 'xmlns:xsi', newvalue=>'http://www.w3.org');
答案 0 :(得分:0)
回答我自己未回答的问题,因为我自己解决了这个问题。希望有人会觉得有用。下面的函数现在将添加XML命名空间。
FUNCTION f_get_details(
p_employee_id NUMBER)
RETURN XMLTYPE
IS
v_xmltype xmltype;
--
main_node xmldom.DOMnode;
ROOT_NODE XMLDOM.DOMNODE;
r_elmt xmldom.domelement;
l_con_node dbms_xmldom.DOMnode;
--
BEGIN
--Create an empty XML document
l_domdoc := xmldom.newDomDocument;
--
--XML declaration
dbms_xmldom.setVersion(l_domdoc, '1.0" encoding="UTF-8');
dbms_xmldom.setCharset(l_domdoc,'UTF-8');
--set root node
r_elmt := xmldom.createelement(l_domdoc, 'test');
dbms_xmldom.setattribute(r_elmt,'xmlns:xsi','http://www.test.com');
l_node := dbms_xmldom.appendChild(xmldom.makenode(l_domdoc), dbms_xmldom.makeNode(r_elmt));
--
v_xmltype := dbms_xmldom.getXMLType(l_domdoc);
dbms_xmldom.freeDocument(l_domdoc);
/*
* Rest of coding.
*/
return v_xmltype;
END f_get_details;
/