syam1986 Ответов: 0

Как получить полную строку из основного тега XML в oracle


У меня есть некоторые типичные проблемы для анализа XML для значений.

пример xml:

<emp>
<name>John</name>
<id1>123</id1>
<address><street>down town</street></address>
</emp>


я пытаюсь разобрать этот xml, используя следующий запрос:

SELECT name,id1,address
                     FROM (SELECT XMLTYPE ('<emp>
<name>John</name>
<id1>123</id1>
<address><street>down town</street></address>
</emp>') object_value FROM DUAL) t,
                          XMLTABLE (
                             '/emp'
                             PASSING t.object_value
                             COLUMNS      name varchar2(2000)   PATH '/emp/name',
                             id1 number   PATH '/emp/id1',
                             address clob   PATH '/emp/address');                


его возвращающийся выход:

имя id1 адрес
Джон 123 вниз по городу

иногда адрес будет приходить строкой, как указано выше, а также с xml-тегами. Я хотел бы вернуть оба значения, как показано ниже.

ожидаемый результат должен быть следующим:

имя id1 адрес
Джон 123 &л;ул>В городе&ЛТ;/ул&ГТ;


Как я могу получить это? Не могли бы вы пожалуйста помочь?

Что я уже пробовал:

<pre>SELECT name,id1,address
                     FROM (SELECT XMLTYPE ('<emp>
<name>John</name>
<id1>123</id1>
<address><street>down town</street></address>
</emp>') object_value FROM DUAL) t,
                          XMLTABLE (
                             '/emp'
                             PASSING t.object_value
                             COLUMNS      name varchar2(2000)   PATH '/emp/name',
                             id1 number   PATH '/emp/id1',
                             address clob   PATH '/emp/address');                

0 Ответов