pl / sql: conversione XMLType al nodo
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?
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