2017-02-22 18 views
0

oracleデータベースからxmlファイルを作成しようとしています。dbms_xmldom - oracleデータベースからxmlを作成する

私は正しいフォーマットを得ることができず、何か助けになるかどうか疑問に思っていました。

これは、スクリプトの一部です:

l_record_element := dbms_xmldom.createElement(l_domdoc, 'record_type'); 
dbms_xmldom.setAttribute(l_record_element,'desc', r_dept.public1); 
l_record_node := dbms_xmldom.appendChild(l_dept_node,dbms_xmldom.makeNode(l_record_element)); 

私の出力:

<record_type desc="Public"/> 

私は必要な出力:

<record_type desc="Public">PUBLIC</record_type> 

ありがとう!

答えて

1

PUBICの値を持つテキストノードを作成して追加する必要があります。

レコードタイプを提供し、同じカーソル位置から来ることを示すデモ:

set serveroutput on 

declare 
    l_domdoc dbms_xmldom.domdocument; 
    l_dept_node dbms_xmldom.domnode; 
    l_record_node dbms_xmldom.domnode; 
    l_record_element dbms_xmldom.domelement; 
    l_record_text dbms_xmldom.domtext; 
    l_tmp_node dbms_xmldom.domnode; 
    l_xmltype xmltype; 
    l_buffer varchar2(32767); 
begin 
    l_domdoc := dbms_xmldom.newDOMDocument; --(xmltype('<data />')); 

    for r_dept in (select 'Public' as public1, 'PUBLIC' as public2 from dual) loop 
    l_dept_node := dbms_xmldom.makeNode(l_domdoc); 

    -- code you showed 
    l_record_element := dbms_xmldom.createElement(l_domdoc, 'record_type'); 
    dbms_xmldom.setAttribute(l_record_element,'desc', r_dept.public1); 
    l_record_node := dbms_xmldom.appendChild(l_dept_node, dbms_xmldom.makeNode(l_record_element)); 
    -- add a text node 
    l_record_text := dbms_xmldom.createTextNode(l_domdoc, r_dept.public2); 
    l_tmp_node := dbms_xmldom.appendChild(l_record_node, dbms_xmldom.makeNode(l_record_text)); 

    -- display the node for demo 
    l_xmltype := dbms_xmldom.getXmlType(l_domdoc); 
    dbms_xmldom.freeDocument(l_domdoc); 
    dbms_output.put_line(l_xmltype.getClobVal); 
    end loop; 
end; 
/

<record_type desc="Public">PUBLIC</record_type> 

PL/SQL procedure successfully completed. 
関連する問題