dbms_xmldom - 如何获取<! - ?xml标记

时间:2016-12-22 11:23:55

标签: oracle plsql

我试图使用PL / SQL包<?xml ....?>在XML文档的开头获取行dbms_xmldom。这是迄今为止的代码

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/>

关于如何做到这一点的任何指示都会变得很棒。

2 个答案:

答案 0 :(得分:2)

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

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

创建文档后

答案 1 :(得分:0)

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>