pl/sql:将 xmltype 转换为节点
Posted
技术标签:
【中文标题】pl/sql:将 xmltype 转换为节点【英文标题】:pl/sql: converting xmltype to node 【发布时间】:2009-12-02 16:26:29 【问题描述】:我正在尝试将一个 XML 文档从多个部分组合在一起。为了获取数据,我有几个查询的结果是 XMLTypes。
我在 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 的任何提示?
【问题讨论】:
【参考方案1】:您好,FrustratedWithFormsDesigner,
以下将从 XMLType 创建一个 DOMnode 对象:
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>
【讨论】:
耶!这样可行!虽然现在我必须将该文档与现有文档合并。尝试给我“DOM 节点不属于同一个 DOM 文档”。以上是关于pl/sql:将 xmltype 转换为节点的主要内容,如果未能解决你的问题,请参考以下文章
使用 PL/SQL 解析 XML 输出 html 中特定标签的内容
如何使用 PL SQL 函数从 xmltype 数据生成 xml 报告
由于在另一个重复模式中重复节点,在 PL/SQL 中提取部分 XMLType