2009-12-02 48 views
2

我試圖將幾個部分的XML文檔放在一起。爲了獲得數據,我有幾個查詢的結果是XMLTypes。pl/sql:將xmltype轉換爲節點

我在xmldom包中發現了一個名爲getNodeFromFragment的函數,看起來好像它可以接受這些XMLTypes並返回一個包含它們的DOMNode,但似乎不起作用。

這裏簡單例子:

set serveroutput on; 
declare 
    node xmldom.DOMNode; 
    node2 xmldom.DOMNode; 
    doc_node xmldom.DOMNode; 
    doc xmldom.DOMDocument; 
    el xmldom.DOMElement; 
    buf varchar2(1000); 
begin 
    doc := xmldom.newDOMDocument; 

    el := xmldom.createElement(doc => doc, tagName => 'test'); 
    node := xmldom.makeNode(elem => el); 

    xmldom.writeToBuffer(node, buf); 
    dbms_output.put_line('buffer: '||buf); 

    node := dbms_xmldom.getNodeFromFragment(XMLType('<outer><inner>soemthing</inner><inner>somethingelse</inner></outer>')); 

    xmldom.writeToBuffer(node, buf); 
    dbms_output.put_line('buffer: '||buf); 
end; 

/

打印<test/>元件正常工作,但是當我嘗試打印的片段作爲一個節點,沒有輸出。

getNodeFromFragment的任何提示?

回答

3

嗨FrustratedWithFormsDesigner,

下面就從一個XMLType創建れ對象:

node := dbms_xmldom.makenode(dbms_xmldom.newDOMDocument(XMLType(
    '<outer><inner>soemthing</inner><inner>somethingelse</inner></outer>'))); 

這將輸出:

buffer: <outer> 
    <inner>soemthing</inner> 
    <inner>somethingelse</inner> 
</outer> 
+0

耶!這樣可行!儘管現在我必須將該文檔與現有文檔合併。嘗試給我「DOM節點不屬於同一個DOM文檔」。 – FrustratedWithFormsDesigner