如何在MS SQL中的XML字段中检索字段?
每当我使用此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)
没有运气。
答案 0 :(得分:3)
您需要在XQuery操作中声明XML命名空间(在这种情况下为“soap”,另外还有一个用于节点和下面的任何内容):
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]
必须是<RunPackage>
标记上定义的URI。
马克