在Oracle 11g上没有编码的Xml

时间:2016-03-08 09:26:57

标签: xml oracle oracle11g

我正在处理用于生成xml文件的存储过程。 我的问题是生成的xml文件不包含encoding标记。 这是一个小例子:

declare
doc DBMS_XMLDOM.DOMDocument;
l_output_clob CLOB ;

begin

          l_output_clob := ' ';
          doc := DBMS_XMLDOM.newDOMDocument;
          DBMS_XMLDOM.setVersion(doc, '1.0');
          DBMS_XMLDOM.setCharset(doc, 'ISO-8859-15');
          dbms_xmldom.writeToClob(doc,l_output_clob) ;
          dbms_output.put_line(l_output_clob);

end;

当我在11g数据库上执行时,结果为:

<?xml version="1.0"?>

上面的代码用于使用以下代码生成xml文件:

DBMS_XMLDOM.writeToFile

所以缺少编码标签,我不知道为什么。 有什么想法吗?

非常感谢。

1 个答案:

答案 0 :(得分:1)

这可能是一种解决方法,但您可以使用以下编码属性:

DECLARE
  doc           dbms_xmldom.domdocument;
  l_output_clob CLOB;
BEGIN

  l_output_clob := ' ';
  doc           := dbms_xmldom.newdomdocument;
  dbms_xmldom.setversion(doc, '1.0" encoding="ISO-8859-15');
  dbms_xmldom.writetoclob(doc, l_output_clob);
  dbms_output.put_line(l_output_clob);
END;

根据Metalink:Xmldom.SetCharSet不能使用WriteToClob Nor WriteToBuffer(Doc ID 1506543.1)

  

SETCHARSET过程仅用于writeToFile。 SETCHARSET是   在writeToClob和writeToBuffer中被忽略。这是设计的。