Гость
Map
Форумы / Oracle [игнор отключен] [закрыт для гостей] / SOAP extract / 7 сообщений из 7, страница 1 из 1
24.11.2021, 14:59
    #40114541
dmdmdm
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
SOAP extract
Поднял свои упражнения по XML.

Упростил до такого.

Код: plsql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
with t as
 (select xmltype('<soap:Envelope xmlns:soap="http://www.w3.org/2003/05/soap-envelope">
  <soap:Body>
    <m:GETResponse xmlns:m="http://localhost/NOXT/">
      <return xmlns:xs="http://www.w3.org/2001/XMLSchema"
          xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
          {return}
      </return>
    </m:GETResponse>
  </soap:Body>
</soap:Envelope>') xml
    from dual)
select x.*
  from t,
       XMLTABLE('//return' PASSING t.xml COLUMNS xml VARCHAR2(400) path '/*') x;



Что-то выдает.

Но изначальный объект вот такой.

Код: xml
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.
46.
47.
48.
49.
50.
51.
52.
53.
54.
55.
56.
57.
58.
59.
60.
61.
62.
63.
64.
65.
66.
67.
68.
69.
70.
71.
72.
73.
74.
75.
76.
77.
78.
79.
80.
81.
82.
83.
84.
85.
86.
87.
88.
89.
<soap:Envelope xmlns:soap="http://www.w3.org/2003/05/soap-envelope">
	<soap:Body>
		<m:GETResponse xmlns:m="http://localhost/NOXT/">
			<m:return xmlns:xs="http://www.w3.org/2001/XMLSchema"
					xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">{
	"object": {
		"inf_prices": [
			{
				"ID_WARE": "12a14479-a2a3-11eb-8c3d-a8a159650ac5",
				"PRICE1": 0
			},
			{
				"ID_WARE": "a3f8c04b-a7f9-11eb-8c3d-a8a159650ac5",
				"PRICE1": 15000
			},
			{
				"ID_WARE": "8615a769-c52b-11eb-8c3d-a8a159650ac5",
				"PRICE1": 0
			},
			{
				"ID_WARE": "5a7ebf47-d8ad-11eb-8c3f-a8a159650ac5",
				"PRICE1": 1500
			},
			{
				"ID_WARE": "4a3a4fb7-1479-11ec-8c49-a8a159650ac5",
				"PRICE1": 1100
			},
			{
				"ID_WARE": "7c07335c-16e6-11ec-8c49-a8a159650ac5",
				"PRICE1": 1100
			},
			{
				"ID_WARE": "969031c3-1a09-11ec-8c4a-a8a159650ac5",
				"PRICE1": 1200
			},
			{
				"ID_WARE": "888893be-1c55-11ec-8c4a-a8a159650ac5",
				"PRICE1": 1500
			},
			{
				"ID_WARE": "45c7aef1-1c64-11ec-8c4a-a8a159650ac5",
				"PRICE1": 0
			},
			{
				"ID_WARE": "58db63cc-1c64-11ec-8c4a-a8a159650ac5",
				"PRICE1": 0
			},
			{
				"ID_WARE": "a97fbd7d-1f66-11ec-8c4a-a8a159650ac5",
				"PRICE1": 1200
			},
			{
				"ID_WARE": "de526b65-42e8-11ec-8c4d-a8a159650ac5",
				"PRICE1": 1100
			},
			{
				"ID_WARE": "65d55968-92b6-11eb-9524-181deaf1436f",
				"PRICE1": 1300
			},
			{
				"ID_WARE": "cda12b0d-8ade-11eb-9670-04d4c4aa3454",
				"PRICE1": 1260
			},
			{
				"ID_WARE": "5a9afc42-8b1c-11eb-9671-04d4c4aa3454",
				"PRICE1": 0
			},
			{
				"ID_WARE": "bcd19d0d-8d42-11eb-9671-04d4c4aa3454",
				"PRICE1": 12600
			},
			{
				"ID_WARE": "598faa9f-983d-11eb-9674-04d4c4aa3454",
				"PRICE1": 1500
			},
			{
				"ID_WARE": "1c77169e-9b73-11eb-9674-04d4c4aa3454",
				"PRICE1": 1000
			},
			{
				"ID_WARE": "1c77169f-9b73-11eb-9674-04d4c4aa3454",
				"PRICE1": 1500
			}
		]
	}
}</m:return>
		</m:GETResponse>
	</soap:Body>
</soap:Envelope>



Направьте, пожалуйста, на нужный путь.

Нужен какой-то пакет SOAP-парсинга, чтобы достать JSON.
...
Рейтинг: 0 / 0
24.11.2021, 15:01
    #40114543
dmdmdm
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
SOAP extract
Версия 18 XE.
...
Рейтинг: 0 / 0
24.11.2021, 16:18
    #40114575
andrey_anonymous
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
SOAP extract
Код: 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.
46.
47.
48.
49.
50.
51.
52.
53.
54.
55.
56.
57.
58.
59.
60.
61.
62.
63.
64.
65.
66.
67.
68.
69.
70.
71.
72.
73.
74.
75.
76.
77.
78.
79.
80.
81.
82.
83.
84.
85.
86.
87.
88.
89.
90.
91.
92.
93.
94.
95.
96.
97.
98.
99.
100.
101.
102.
103.
104.
105.
106.
107.
108.
109.
110.
111.
112.
113.
114.
115.
116.
117.
118.
119.
120.
121.
122.
123.
124.
125.
126.
127.
128.
129.
130.
131.
with t as (select '<soap:Envelope xmlns:soap="http://www.w3.org/2003/05/soap-envelope">
  <soap:Body>
    <m:GETResponse xmlns:m="http://localhost/NOXT/">
      <m:return xmlns:xs="http://www.w3.org/2001/XMLSchema"
          xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">{
  "object": {
    "inf_prices": [
      {
        "ID_WARE": "12a14479-a2a3-11eb-8c3d-a8a159650ac5",
        "PRICE1": 0
      },
      {
        "ID_WARE": "a3f8c04b-a7f9-11eb-8c3d-a8a159650ac5",
        "PRICE1": 15000
      },
      {
        "ID_WARE": "8615a769-c52b-11eb-8c3d-a8a159650ac5",
        "PRICE1": 0
      },
      {
        "ID_WARE": "5a7ebf47-d8ad-11eb-8c3f-a8a159650ac5",
        "PRICE1": 1500
      },
      {
        "ID_WARE": "4a3a4fb7-1479-11ec-8c49-a8a159650ac5",
        "PRICE1": 1100
      },
      {
        "ID_WARE": "7c07335c-16e6-11ec-8c49-a8a159650ac5",
        "PRICE1": 1100
      },
      {
        "ID_WARE": "969031c3-1a09-11ec-8c4a-a8a159650ac5",
        "PRICE1": 1200
      },
      {
        "ID_WARE": "888893be-1c55-11ec-8c4a-a8a159650ac5",
        "PRICE1": 1500
      },
      {
        "ID_WARE": "45c7aef1-1c64-11ec-8c4a-a8a159650ac5",
        "PRICE1": 0
      },
      {
        "ID_WARE": "58db63cc-1c64-11ec-8c4a-a8a159650ac5",
        "PRICE1": 0
      },
      {
        "ID_WARE": "a97fbd7d-1f66-11ec-8c4a-a8a159650ac5",
        "PRICE1": 1200
      },
      {
        "ID_WARE": "de526b65-42e8-11ec-8c4d-a8a159650ac5",
        "PRICE1": 1100
      },
      {
        "ID_WARE": "65d55968-92b6-11eb-9524-181deaf1436f",
        "PRICE1": 1300
      },
      {
        "ID_WARE": "cda12b0d-8ade-11eb-9670-04d4c4aa3454",
        "PRICE1": 1260
      },
      {
        "ID_WARE": "5a9afc42-8b1c-11eb-9671-04d4c4aa3454",
        "PRICE1": 0
      },
      {
        "ID_WARE": "bcd19d0d-8d42-11eb-9671-04d4c4aa3454",
        "PRICE1": 12600
      },
      {
        "ID_WARE": "598faa9f-983d-11eb-9674-04d4c4aa3454",
        "PRICE1": 1500
      },
      {
        "ID_WARE": "1c77169e-9b73-11eb-9674-04d4c4aa3454",
        "PRICE1": 1000
      },
      {
        "ID_WARE": "1c77169f-9b73-11eb-9674-04d4c4aa3454",
        "PRICE1": 1500
      }
    ]
  }
}</m:return>
    </m:GETResponse>
  </soap:Body>
</soap:Envelope>' soap from dual)
select /*+ no_merge(x)*/
       j.*
  from t
     , xmltable( xmlnamespaces ('http://www.w3.org/2003/05/soap-envelope' as "soap"
                               ,'http://localhost/NOXT/' as "m")
               , '/soap:Envelope/soap:Body/m:GETResponse'
               passing xmltype(t.soap)
               columns j clob path 'm:return'
       ) x
     , json_table(x.j, '$.object.inf_prices[*]'
       columns( ID_WARE path '$.ID_WARE'
			        , PRICE1 path '$.PRICE1'
			        )
       ) j
;

ID_WARE                                                                          PRICE1
-------------------------------------------------------------------------------- --------------------------------------------------------------------------------
12a14479-a2a3-11eb-8c3d-a8a159650ac5                                             0
a3f8c04b-a7f9-11eb-8c3d-a8a159650ac5                                             15000
8615a769-c52b-11eb-8c3d-a8a159650ac5                                             0
5a7ebf47-d8ad-11eb-8c3f-a8a159650ac5                                             1500
4a3a4fb7-1479-11ec-8c49-a8a159650ac5                                             1100
7c07335c-16e6-11ec-8c49-a8a159650ac5                                             1100
969031c3-1a09-11ec-8c4a-a8a159650ac5                                             1200
888893be-1c55-11ec-8c4a-a8a159650ac5                                             1500
45c7aef1-1c64-11ec-8c4a-a8a159650ac5                                             0
58db63cc-1c64-11ec-8c4a-a8a159650ac5                                             0
a97fbd7d-1f66-11ec-8c4a-a8a159650ac5                                             1200
de526b65-42e8-11ec-8c4d-a8a159650ac5                                             1100
65d55968-92b6-11eb-9524-181deaf1436f                                             1300
cda12b0d-8ade-11eb-9670-04d4c4aa3454                                             1260
5a9afc42-8b1c-11eb-9671-04d4c4aa3454                                             0
bcd19d0d-8d42-11eb-9671-04d4c4aa3454                                             12600
598faa9f-983d-11eb-9674-04d4c4aa3454                                             1500
1c77169e-9b73-11eb-9674-04d4c4aa3454                                             1000
1c77169f-9b73-11eb-9674-04d4c4aa3454                                             1500

19 rows selected


SQL> 
...
Рейтинг: 0 / 0
13.12.2021, 17:22
    #40119690
dmdmdm
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
SOAP extract
andrey_anonymous, спасибо за помощь.

Решил в этой теме продолжить.

Чего-то недопонимаю.

Так работает.

Код: 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.
46.
47.
48.
49.
with clobtable(c) as 
(
select '[
  {
    "Ссылка": "КОВЕР ROCOCO 3230 1220 KEMIK/KREM ОВАЛ 0.8*1.25 (1)					",
    "Код": "00-00207153",
    "Артикул": "3230 1220",
    "Значение": "00000148548",
    "УИД": "ebb76aeb-0815-11e8-8382-3cd92beecda8"
  },
  {
    "Ссылка": "КОВЕР ROCOCO 3230 1220 KEMIK/KREM ОВАЛ 1.5*2.3 (3.45)					",
    "Код": "00-00207154",
    "Артикул": "3230 1220",
    "Значение": "00000148549",
    "УИД": "0d084d63-0816-11e8-8382-3cd92beecda8"
  },
  {
    "Ссылка": "КОВЕР ROCOCO 3230 1226 KREM/HARDAL ОВАЛ 0.8*1.25 (1)					",
    "Код": "00-00207155",
    "Артикул": "3230 1226",
    "Значение": "00000148550",
    "УИД": "3e041e84-0816-11e8-8382-3cd92beecda8"
  },
  {
    "Ссылка": "КОВЕР ROCOCO 3230 1226 KREM/HARDAL ОВАЛ 1.5*2.3 (3.45)					",
    "Код": "00-00207156",
    "Артикул": "3230 1226",
    "Значение": "00000148551",
    "УИД": "5cb5bcec-0816-11e8-8382-3cd92beecda8"
  },
  {
    "Ссылка": "КОВЕР ROCOCO 3230 1229 BEJ/KREM 0.8*1.5 (1.2)					",
    "Код": "00-00207157",
    "Артикул": "3230 1229",
    "Значение": "00000148552",
    "УИД": "8d54b865-0816-11e8-8382-3cd92beecda8"
  }
]'
from dual
)
select --clobtable.c,
        j.id_ware
    from clobtable,
         
         json_table(clobtable.c, '$[*]'
         columns( ID_WARE path '$."Код"'
                )
         ) j;



А в запросе из таблицы - нет.

Может, проблема в том, что имя поля по-русски?
...
Рейтинг: 0 / 0
13.12.2021, 17:28
    #40119693
dmdmdm
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
SOAP extract
В случае с with кодировка хромает.

PL/SQL developer 14.
...
Рейтинг: 0 / 0
13.12.2021, 17:33
    #40119695
dmdmdm
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
SOAP extract
Да, проблема из-за русского названия поля. Но это workaround, а причина непонятна.
...
Рейтинг: 0 / 0
13.12.2021, 17:46
    #40119699
dmdmdm
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
SOAP extract
Эксперименты велись с машины, на которой Oracle client только что был установлен, и NLS_LANG была не проверена.

AMERICAN_AMERICA.WE8MSWIN1252 -> AMERICAN_AMERICA.CL8MSWIN1251
...
Рейтинг: 0 / 0
Форумы / Oracle [игнор отключен] [закрыт для гостей] / SOAP extract / 7 сообщений из 7, страница 1 из 1
Целевая тема:
Создать новую тему:
Автор:
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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