2016-03-08 51 views
1

我正在处理用于生成xml文件的存储过程。 我的问题是生成的xml文件不包含encoding标记。 这里是一个小例子:在Oracle 11g上没有编码的Xml

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

这可能是一个解决办法,但你可以按照如下有一个编码属性:

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也WriteToBuffer(文档ID 1506543.1)

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

+0

好的,我会使用这个解决方案,我知道它,但我正在寻找更干净的东西。 –