Гость
Форумы / Microsoft SQL Server [игнор отключен] [закрыт для гостей] / Значение тега из XML / 6 сообщений из 6, страница 1 из 1
21.09.2020, 18:21
    #40001072
assmsk
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Значение тега из XML
Всем привет.
Наткнулся на непривычную для себя xml'ky и никак не могу вытащить значение тега c помощью xml.value...
Подскажите что нужно написать в месте - ??? чтобы получить значить тега CUST_GENDER

Код: xml
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
<soapenv:Envelope xmlns:soapenv="http://xxx.ru" xmlns:wsin="http://xxx.ru">
  <soapenv:Header />
  <soapenv:Body>
		<wsin:WSIntegrationFraudPreventionScoreMatchGet>
			<inCommonParms>
				<externalSystemCode>EW</externalSystemCode>
				<externalUserCode />
					<inCommonParmsExt>
				<name>WSCallbackURL</name>
				<value>http://xxx:7084/WSIntegationFraudPreventionScoreResult10</value>
					</inCommonParmsExt>
			</inCommonParms>
		<inParms>
        <CUST_GENDER>0</CUST_GENDER>
      </inParms>
		</wsin:WSIntegrationFraudPreventionScoreMatchGet> 
  </soapenv:Body>
</soapenv:Envelope> 




Код: sql
1.
2.
3.
4.
SELECT 
[XML_VALUE].value('???', 'int') as CUST_GENDER
FROM 
TABLE
...
Рейтинг: 0 / 0
21.09.2020, 18:30
    #40001076
felix_ff
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Значение тега из XML
assmsk,

Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
declare @x xml = '<soapenv:Envelope xmlns:soapenv="http://xxx.ru" xmlns:wsin="http://xxx.ru">
  <soapenv:Header />
  <soapenv:Body>
		<wsin:WSIntegrationFraudPreventionScoreMatchGet>
			<inCommonParms>
				<externalSystemCode>EW</externalSystemCode>
				<externalUserCode />
					<inCommonParmsExt>
				<name>WSCallbackURL</name>
				<value>http://xxx:7084/WSIntegationFraudPreventionScoreResult10</value>
					</inCommonParmsExt>
			</inCommonParms>
		<inParms>
        <CUST_GENDER>0</CUST_GENDER>
      </inParms>
		</wsin:WSIntegrationFraudPreventionScoreMatchGet> 
  </soapenv:Body>
</soapenv:Envelope>'


select @x.value('declare namespace x="http://xxx.ru"; (/x:Envelope/x:Body/x:WSIntegrationFraudPreventionScoreMatchGet/inParms/CUST_GENDER)[1]', 'int')
...
Рейтинг: 0 / 0
21.09.2020, 20:45
    #40001112
assmsk
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Значение тега из XML
felix_ff, неудачно отредактировал) Не получается получить таким образом если soapenv и wsin разные

Код: xml
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:wsin="http://WSIntegationFraudPreventionScore10.IFPS.CS.ws.xxx.ru">
  <soapenv:Header />
  <soapenv:Body>
		<wsin:WSIntegrationFraudPreventionScoreMatchGet>
			<inCommonParms>
				<externalSystemCode>EW</externalSystemCode>
				<externalUserCode />
					<inCommonParmsExt>
				<name>WSCallbackURL</name>
				<value>http://xxxsbrmib:7084/WSIntegationFraudPreventionScoreResult10</value>
					</inCommonParmsExt>
			</inCommonParms>
		<inParms>
        <CUST_GENDER>0</CUST_GENDER>
      </inParms>
		</wsin:WSIntegrationFraudPreventionScoreMatchGet> 
  </soapenv:Body>
</soapenv:Envelope>
...
Рейтинг: 0 / 0
21.09.2020, 21:06
    #40001114
invm
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Значение тега из XML
assmsk
Не получается получить таким образом если soapenv и wsin разные
Ну так определите два неймспейса
Код: sql
1.
2.
3.
4.
select @x.value('
 declare namespace x="http://schemas.xmlsoap.org/soap/envelope/";
 declare namespace y="http://WSIntegationFraudPreventionScore10.IFPS.CS.ws.xxx.ru";
 (/x:Envelope/x:Body/y:WSIntegrationFraudPreventionScoreMatchGet/inParms/CUST_GENDER)[1]', 'int');
...
Рейтинг: 0 / 0
21.09.2020, 21:19
    #40001116
felix_ff
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Значение тега из XML
assmsk,

Если абстрагироваться от определения w3c, то рассматривайте пространства имен как расширение имени элемента. То есть во всех случаях где элемент отнесен к какому либо пространству имен, что бы его получить вы обязательно должны указать его полное квалификационное имя. Если пространства имен разные то соответственно вы должны ввести столько алиасов сколько есть различных пространств имен. Пример вам выше показали.
...
Рейтинг: 0 / 0
21.09.2020, 21:47
    #40001119
invm
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Значение тега из XML
И для полноты картины плохой способ для ленивых
Код: sql
1.
select @x.value('(/*:Envelope/*:Body/*:WSIntegrationFraudPreventionScoreMatchGet/inParms/CUST_GENDER)[1]', 'int');
...
Рейтинг: 0 / 0
Форумы / Microsoft SQL Server [игнор отключен] [закрыт для гостей] / Значение тега из XML / 6 сообщений из 6, страница 1 из 1
Целевая тема:
Создать новую тему:
Автор:
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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