Как выбрать теги из XML-запроса SQL?
Вопрос
Как я могу получить поля в поле XML в MS SQL?
Каждый запрос, который я пытаюсь выполнить, не работает должным образом, когда я использую этот XML-код:
<soap:Envelope xmlns:xsi="[URI]" xmlns:xsd="[URI]" xmlns:soap="[URI]">
<soap:Body>
<RunPackage xmlns="[URI]">
<xmlDoc>
<Request>
<SubscriberCode>76547654</SubscriberCode>
<CompanyCode></CompanyCode>
</Request>
</xmlDoc>
</RunPackage>
</soap:Body>
</soap:Envelope>
Я не знаю, как ссылаться на первые два тега.я пробовал
SELECT TransactionID, T2.Loc.query('data(Request/SubscriberCode)') as 'SubscriberCode'
FROM TempWorksRequest
CROSS APPLY RequestXML.nodes('soap:Envelope/soap:Body/RunPackage/xmlDoc') as T2(Loc)
Безуспешно.
Решение
Вам необходимо объявить пространства имен XML («мыло» в данном случае плюс еще одно для узла и все, что указано ниже) в ваших операциях XQuery:
SELECT
TransactionID,
T2.Loc.query('declare namespace ns="[URI1]";data(ns:Request/ns:SubscriberCode)')
as 'SubscriberCode'
FROM
TempWorksRequest
CROSS APPLY
RequestXML.nodes('declare namespace soap="[URI]";
declare namespace ns="[URI1]";
soap:Envelope/soap:Body/ns:RunPackage/ns:xmlDoc') as T2(Loc)
[URI1]
должен быть URI, определенный в <RunPackage>
ярлык.
Марк
Не связан с StackOverflow