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?

Foi útil?

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
scroll top