2016-03-08 4 views
1

Я работаю над хранимой процедурой, используемой для генерации XML-файла. Моя проблема заключается в том, что сгенерированный XML-файл не содержит тег encoding. Вот небольшой пример:Xml без кодирования на Oracle 11g

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; 

По Металинк: Xmldom.SetCharSet не работает с WriteToClob Нор WriteToBuffer (Doc ID 1506543.1)

Процедура SETCHARSET используется только для writeToFile. SETCHARSET - игнорируется в writeToClob и writeToBuffer. Это по дизайну.

+0

Хорошо, я буду использовать это решение, я знал это, но я искал что-то более чистое. –