pl / sql: преобразование xmltype в узел - PullRequest
2 голосов
/ 02 декабря 2009

Я пытаюсь собрать документ XML из нескольких частей. Чтобы получить данные, у меня было несколько запросов, результаты которых были XMLTypes.

Я нашел функцию с именем getNodeFromFragment в пакете xmldom, которая выглядела так, как будто она может взять эти XMLTypes и вернуть DOMNode, содержащий их, но, похоже, она не работает.

Простой пример здесь:

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;

/

Печать элемента <test/> работает нормально, но когда я пытаюсь распечатать фрагмент как узел, ничего не выводится.

Какие-нибудь советы по getNodeFromFragment?

1 Ответ

3 голосов
/ 02 декабря 2009

Привет FrustratedWithFormsDesigner,

следующее создаст объект DOMnode из XMLType:

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

Будет выведено:

buffer: <outer>
  <inner>soemthing</inner>
  <inner>somethingelse</inner>
</outer>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...