Pregunta

Estoy tratando de armar un documento XML a partir de varias piezas. Para obtener los datos, que tenía varias consultas cuyos resultados fueron XMLTypes.

He encontrado una función llamada getNodeFromFragment en el paquete xmldom que parecía que se podría tomar estos XMLTypes y devolver una DOMNode que los contenía, pero no parece funcionar.

Un simple ejemplo aquí:

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;

/

Prensa elemento <test/> funciona bien, pero cuando intento imprimir el fragmento como un nodo, no hay ninguna emisión.

¿Algún consejo sobre getNodeFromFragment?

¿Fue útil?

Solución

Hola FrustratedWithFormsDesigner,

la siguiente creará un objeto DOMNode de un XMLType:

node := dbms_xmldom.makenode(dbms_xmldom.newDOMDocument(XMLType(
     '<outer><inner>soemthing</inner><inner>somethingelse</inner></outer>')));

Esta es la salida:

buffer: <outer>
  <inner>soemthing</inner>
  <inner>somethingelse</inner>
</outer>
Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top