Domanda

Sto cercando di mettere insieme un documento XML da vari pezzi. Per ottenere i dati, ho avuto diverse query i cui risultati sono stati XMLTypes.

Ho trovato una funzione denominata getNodeFromFragment nel pacchetto xmldom che sembrava potesse prendere questi XMLTypes e restituire un DOMNode che li conteneva, ma non sembra funzionare.

Semplice esempio qui:

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;

/

la stampa l'elemento <test/> funziona bene, ma quando provo a stampare il frammento come un nodo, non viene emesso.

Eventuali suggerimenti su getNodeFromFragment?

È stato utile?

Soluzione

Ciao FrustratedWithFormsDesigner,

il seguente sarà creare un oggetto DOMNode da un XMLType:

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

Questa uscita volontà:

buffer: <outer>
  <inner>soemthing</inner>
  <inner>somethingelse</inner>
</outer>
Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top