2009-12-02 7 views
2

Je suis en train d'assembler un document XML à partir de plusieurs pièces. Pour obtenir les données, j'ai eu plusieurs requêtes dont les résultats étaient XMLTypes.pl/sql: conversion de xmltype en noeud

J'ai trouvé une fonction nommée getNodeFromFragment dans le paquetage xmldom qui semblait pouvoir prendre ces types XMLTypes et renvoyer un DOMNode qui les contenait, mais cela ne semble pas fonctionner.

exemple simple ici:

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; 

/

l'élément d'impression <test/> fonctionne très bien, mais lorsque je tente d'imprimer le fragment comme un nœud, rien est sortie.

Des conseils sur getNodeFromFragment?

Répondre

3

Salut FrustratedWithFormsDesigner,

ce qui suit va créer un objet à partir d'un DOMNode XMLType:

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

Affichera:

buffer: <outer> 
    <inner>soemthing</inner> 
    <inner>somethingelse</inner> 
</outer> 
+0

Yay! Ça marche! Bien que maintenant je doive fusionner ce document avec un document existant. Essayer me donne "les noeuds DOM n'appartiennent pas au même document DOM". – FrustratedWithFormsDesigner