pl / sql: converter XMLType ao nó
Pergunta
Eu estou tentando montar um documento XML a partir de várias peças. Para obter os dados, eu tive várias consultas cujos resultados foram XMLTypes.
Eu encontrei uma função chamada getNodeFromFragment
no pacote XMLDOM que parecia que poderia tomar esses XMLTypes e retornar um DOMNode que os continha, mas não parece trabalho.
Um exemplo simples aqui:
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;
/
Imprimir o elemento <test/>
fina funciona, mas quando eu tento imprimir o fragmento como um nó, nada é de saída.
Todas as dicas sobre getNodeFromFragment?
Solução
Hi FrustratedWithFormsDesigner,
o seguinte irá criar um objeto DOMNode de um XMLType:
node := dbms_xmldom.makenode(dbms_xmldom.newDOMDocument(XMLType(
'<outer><inner>soemthing</inner><inner>somethingelse</inner></outer>')));
A saída será:
buffer: <outer>
<inner>soemthing</inner>
<inner>somethingelse</inner>
</outer>
Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow