كيف يمكنني تحديد علامات من استعلام SQL XML؟
سؤال
كيف يمكنني استرداد الحقول داخل حقل 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