powered by simpleCommunicator - 2.0.29     © 2024 Programmizd 02
Map
Форумы / Oracle [игнор отключен] [закрыт для гостей] / SOAP extract
7 сообщений из 7, страница 1 из 1
SOAP extract
    #40114541
dmdmdm
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Поднял свои упражнения по 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
SOAP extract
    #40114543
dmdmdm
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Версия 18 XE.
...
Рейтинг: 0 / 0
SOAP extract
    #40114575
Фотография 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.
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
SOAP extract
    #40119690
dmdmdm
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
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
SOAP extract
    #40119693
dmdmdm
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
В случае с with кодировка хромает.

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

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


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