Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Oracle [игнор отключен] [закрыт для гостей] / Разбоh XML / 6 сообщений из 6, страница 1 из 1
27.08.2018, 19:04
    #39693916
IMNO
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Разбоh XML
Здравствуйте.

Нужно разобрать XML.

Вот что у меня получилось:
Код: plsql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
WITH
  TXML AS (SELECT XMLType('<?xml version="1.0" encoding="Cp866"?>
                           <document>                            
                             <data>
                               <part number = "one">
                                 <client>
                                   <name>Клиент 1</name>
                                 </client>
                                 <client>
                                   <name>Клиент 2</name>
                                 </client>
                               </part>
                               <part number = "two">
                                 <client>
                                   <name></name>
                                 </client>
                                 <client>
                                   <name>Клиент 4</name>
                                 </client>
                               </part>
                             </data>
                           </document>') AS col_xml
          FROM DUAL)
SELECT TXML.col_xml.extract('/document/data/part/@number').getStringVal(), name
FROM TXML 
CROSS JOIN XMLTable('/document/data/part/client' PASSING TXML.col_xml COLUMNS
                    name VARCHAR2(100) PATH 'name')


Мне нужно:
part nameone Клиент 1one Клиент 2two NULLtwo Клиент 4

Как видно из результата, у меня идёт склеивание атрибутов.

Как правильно разобрать XML, чтобы атрибуты были раздельно?
...
Рейтинг: 0 / 0
27.08.2018, 19:51
    #39693943
SY
SY
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Разбоh XML
Начнем с того что EXTRACT deprecated да и тут не в тему.

Код: plsql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
42.
43.
44.
45.
WITH
  TXML AS (SELECT  XMLType('<?xml version="1.0" encoding="Cp866"?>
                            <document>
                              <data>
                                <part number = "one">
                                  <client>
                                    <name>Client 1</name>
                                  </client>
                                  <client>
                                    <name>Client 2</name>
                                  </client>
                                </part>
                                <part number = "two">
                                  <client>
                                    <name></name>
                                  </client>
                                  <client>
                                    <name>Client 4</name>
                                  </client>
                                </part>
                              </data>
                            </document>') AS col_xml
             FROM  DUAL
          )
SELECT  part,
        name
 FROM      TXML
        CROSS JOIN
           XMLTABLE(
                    '/document/data/part/client'
                    PASSING TXML.col_xml
                    COLUMNS
                      part VARCHAR2(100) PATH './../@number',
                      name VARCHAR2(100) PATH '/name'
                   )
/

PART  NAME
----- ----------
one   Client 1
one   Client 2
two
two   Client 4

SQL> 



SY.
...
Рейтинг: 0 / 0
28.08.2018, 10:32
    #39694131
IMNO
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Разбоh XML
Спасибо.

Можно ссылку на доку, чтобы посмотреть, что это за конструкция?
SY
Код: plsql
1.
 './../@number'



Первый раз сталкиваюсь с XML, даже не знаю, что гуглить.
...
Рейтинг: 0 / 0
28.08.2018, 10:42
    #39694135
dmdmdm
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Разбоh XML
...
Рейтинг: 0 / 0
28.08.2018, 10:55
    #39694143
-2-
-2-
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Разбоh XML
SYEXTRACT deprecated Этот .extract() не deprecated. А вот .getStringVal() по версии xml db developers является deprecated, хотя описание метода в plsql packages & types об этом молчит.
...
Рейтинг: 0 / 0
28.08.2018, 11:53
    #39694209
andrey_anonymous
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Разбоh XML
IMNOПервый раз сталкиваюсь с XML, даже не знаю, что гуглить.
Если не знаете что гуглить - попробуйте начать с оригинала.
https://www.w3.org/standards/xml/

В частности, узнаете, что XML - штука многомерная и SY показал лишь одну из осей, по которым можно двигаться :)
...
Рейтинг: 0 / 0
Форумы / Oracle [игнор отключен] [закрыт для гостей] / Разбоh XML / 6 сообщений из 6, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]