pl/sql: преобразование xmltype в узел
Я пытаюсь собрать документ XML из нескольких частей. Чтобы получить данные, у меня было несколько запросов, результаты которых были XMLTypes.
Я нашел функцию с именем getNodeFromFragment
в пакете xmldom, который выглядел так, как будто он может взять эти 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,
следующее создаст объект DOMnode из 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>