2009-12-02 45 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