2016-03-08 50 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

好的,我會使用這個解決方案,我知道它,但我正在尋找更乾淨的東西。 –