Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Oracle Новый топик    Ответить
 Разбор входящего XLM  [new]
TRust
Member

Откуда: из самоизоляции
Сообщений: 286
Знатокам XML в Oracle!

Нужно решить простенькую задачку:
Написать pipelined функцию, которой на вход подаётся XML примерно такой структуры -

<Names>
 <Element1/>
 <Element2>
   ...
 </Element2>
 ...
 <LastElement>
   ...
 </LastElement>
</Names>


На выходе хотелось бы иметь примерно такой результат:
Col1         Col2
------------ -------------------------
Element1     <Element1></Element1>
Element2     <Element2>...</Element2>
...
LastElement  <LastElement>... </LastElement>

Ну, или кинуть ссылочку на похожий пример...

Естественно, что речь идёт о встроенных инструментах обработки XML.
Руками символьный парсер писать - не предлагать.
12 сен 13, 11:34    [14830179]     Ответить | Цитировать Сообщить модератору
 Re: Разбор входящего XLM  [new]
-2-
Member

Откуда:
Сообщений: 15330
TRust
Ну, или кинуть ссылочку на похожий пример...
неужели с 2006 тебе никто не давал ссылку на все примеры?
12 сен 13, 11:45    [14830279]     Ответить | Цитировать Сообщить модератору
 Re: Разбор входящего XLM  [new]
TRust
Member

Откуда: из самоизоляции
Сообщений: 286
-2-
неужели с 2006 тебе никто не давал ссылку на все примеры?

А конкретнее?...
12 сен 13, 12:40    [14830682]     Ответить | Цитировать Сообщить модератору
 Re: Разбор входящего XLM  [new]
Максим Н
Member

Откуда: Екатеринодар
Сообщений: 1439
TRust,

ИМХО хорошо бы xml-ку причесать примерно да такого вида:

<Names>
 <Element/>
 <Element>
   Element2
 </Element>
 
 <Element>
   ElementТ
 </Element>
</Names>


Так красивее, правильнее и парсер проще будет.
12 сен 13, 13:17    [14830961]     Ответить | Цитировать Сообщить модератору
 Re: Разбор входящего XLM  [new]
TRust
Member

Откуда: из самоизоляции
Сообщений: 286
Максим Н
ИМХО хорошо бы xml-ку причесать примерно да такого вида:
...
Так красивее, правильнее и парсер проще будет.

С заранее известными именами элементов я умею. Это не интересно.
Нужно с заранее неизвестными именами!
12 сен 13, 14:06    [14831386]     Ответить | Цитировать Сообщить модератору
 Re: Разбор входящего XLM  [new]
-2-
Member

Откуда:
Сообщений: 15330
TRust
С заранее известными именами элементов я умею. Это не интересно.
Нужно с заранее неизвестными именами!
ну так напиши сюда рабочий пример с заранее известными, посмотри по используемым тобой функциям в оракловой доке ключевые слова. Они окажутся xpath и xquery и там же найдешь отсыл на w3c.org.
12 сен 13, 14:11    [14831409]     Ответить | Цитировать Сообщить модератору
 Re: Разбор входящего XLM  [new]
TRust
Member

Откуда: из самоизоляции
Сообщений: 286
Применить функцию name из w3c.org я не могу:
ORA-32012: Given XPATH expression not supported
11.2
12 сен 13, 14:45    [14831633]     Ответить | Цитировать Сообщить модератору
 Re: Разбор входящего XLM  [new]
Трудяга Биггер
Guest
TRust,

select d.column_value.getRootElement() col1, d.extract('*').getStringVal() Col2
from table(XMLSequence(XMLType('<Names><Element1/><Element2>...</Element2><LastElement>...</LastElement></Names>').extract('/*/*'))) d
12 сен 13, 15:28    [14831893]     Ответить | Цитировать Сообщить модератору
 Re: Разбор входящего XLM  [new]
xtender
Member

Откуда: Мск
Сообщений: 5704
TRust
Применить функцию name из w3c.org я не могу:
ORA-32012: Given XPATH expression not supported

11.2
да ну?
+
SQL> select version from v$instance;

VERSION
---------------------------------------------------
11.2.0.3.0

SQL> select
  2       col1,col2
  3  from xmltable('/*/*'
  4                passing
  5                   xmltype('<Names>
  6                              <Element1/>
  7                              <Element2>
  8                                <SubElement21>...</SubElement21>
  9                              </Element2>
 10                              <LastElement>
 11                                ...
 12                              </LastElement>
 13                             </Names>')
 14                columns
 15                  col1 varchar2(100)  path 'name()'
 16                 ,col2 xmltype        path '.'
 17               )
 18  /

COL1                           COL2
------------------------------ ----------------------------------------------------------------------------------------------------
Element1                       <Element1/>
Element2                       <Element2><SubElement21>...</SubElement21></Element2>
LastElement                    <LastElement>
                                                             ...
                                                           </LastElement>
12 сен 13, 15:34    [14831926]     Ответить | Цитировать Сообщить модератору
 Re: Разбор входящего XLM  [new]
TRust
Member

Откуда: из самоизоляции
Сообщений: 286
Трудяга Биггер, xtender,
Это то, что нужно. Оба варианта подойдут.
Спасибо
12 сен 13, 16:07    [14832155]     Ответить | Цитировать Сообщить модератору
Все форумы / Oracle Ответить