Oracle dbms_xmldom-如何获取<;?xml标记

Oracle dbms_xmldom-如何获取<;?xml标记,oracle,plsql,Oracle,Plsql,我试图使用PL/SQL包dbms\u xmldom在XML文档的开头获取行。这是到目前为止的代码 declare l_dom dbms_xmldom.DOMDocument; l_clob clob; l_node dbms_xmldom.DOMNode; begin l_dom := dbms_xmldom.newDomDocument; l_node := dbms_xmldom.makeNode(l_dom); l_node := dbms_xmldom

我试图使用PL/SQL包
dbms\u xmldom
在XML文档的开头获取行
。这是到目前为止的代码

declare
  l_dom   dbms_xmldom.DOMDocument;
  l_clob  clob;
  l_node  dbms_xmldom.DOMNode;

begin
  l_dom := dbms_xmldom.newDomDocument;
  l_node := dbms_xmldom.makeNode(l_dom);

  l_node := dbms_xmldom.appendChild(l_node, 
              dbms_xmldom.makeNode(
                dbms_xmldom.createElement(l_dom, 'root')
              )
            );

  dbms_lob.createtemporary(l_clob, true);

  dbms_xmldom.writeToClob(l_dom, l_clob);
  dbms_output.put_line(l_clob);
end;
输出为:

<root/>

期望:

<?xml version="1.0" encoding="UTF-8"?>
<root/>


任何关于如何做到这一点的建议都会很好。

仅供记录-以下是您需要添加的内容

dbms_xmldom.setVersion(l_dom, '1.0" encoding="UTF-8');

创建文档后,prolog通常通过XML序列化自动添加,因此您不需要自己添加,但如果您想添加,可以使用XMLRoot

生成XML的方法效率很低。您应该了解XMLElement、XMLForest、XMLAgg等

下面是一个简单的根和子示例,prolog只包含一行代码

select XMLRoot(XMLElement("root", XMLElement("child", 12)), version '1.0') from dual

<?xml version="1.0"?>
<root>
  <child>12</child>
</root>
从dual中选择XMLRoot(XMLElement(“root”,XMLElement(“child”,12)),版本“1.0”)
12

我花了一点时间才找到这个答案。我刚刚放了一个片段,因为其余的代码都是使用PL/SQL生成其余的XML文档的。谢谢您的贡献。