Я пытаюсь запросить поля из следующего XML-запроса (который на самом деле является вызовом веб-службы):
<soap:Envelope xmlns:xsi="[schema]" xmlns:xsd="[shema]" xmlns:soap="[schema]">
<soap:Body>
<RunPackage xmlns="http://tempuri.org/">
<xmlDoc>
<Request>
<SubscriberCode>543253</SubscriberCode>
<CompanyCode>54325</CompanyCode>
<BranchName>TestBranchName</BranchName>
<TempWorksUserName>TempWorksUserName</TempWorksUserName>
[...]
Со следующим XML-запросом:
WITH XMLNAMESPACES('[schema]' AS soap2, DEFAULT '[schema]')
SELECT TransactionID, T2.Loc.query('data(Request/SubscriberCode)') as 'SubscriberCode'
FROM TempWorksRequest
CROSS APPLY RequestXML.nodes('soap2:Envelope/soap2:Body/RunPackage/xmlDoc') as T2(Loc)
Он работает, но не возвращает никаких повторений!
Если я создаю тот же запрос, но удаляю материал пространства имен, ТОГДА он работает Например, отлично работает следующее:
543253
54325
TestBranchName
[...]
SQL-запрос:
- Определить пространство имен для MITS, чтобы мы могли использовать пространство имен MITS.
WITH XMLNAMESPACES ('[схема]'
КАК МЫЛО, ПО УМОЛЧАНИЮ
'[Схема]')
SELECT TransactionID,
T2.Loc.query ('data (Request / SubscriberCode)') как 'SubscriberCode'
ОТ TempWorksRequest
CROSS APPLY RequestXML.nodes ('xmlDoc') как T2 (Loc)
Есть идеи?