我有下面的XML:SQL服務器:XQUERY命名空間解析
declare @xml xml = '
<DiscoverResponse xmlns="urn:schemas-microsoft-com:xml-analysis">
<return>
<root xmlns="urn:schemas-microsoft-com:xml-analysis:rowset">
<row>
<xars:METADATA xmlns="http://schemas.microsoft.com/analysisservices/2003/engine">
<Server>
<Name>myName</Name>
</Server>
</xars:METADATA>
</row>
</root>
</return>
</DiscoverResponse>'
而且我已經能夠解析到<行>標籤與下面的查詢
; WITH XMLNAMESPACES(
'urn:schemas-microsoft-com:xml-analysis' AS ns1,
'urn:schemas-microsoft-com:xml-analysis:rowset' AS ns2
)
select
t.x.value('ns2:Name[1]','varchar(100)') AS Name
from @xml.nodes('//ns1:DiscoverResponse/ns1:return/ns2:root/ns2:row') t(x)
我堅持試圖找出如何查詢過去的< xars:METADATA >標籤。也就是說,我一直未能成功地構造一個名稱空間聲明和路徑規範,以便到達<服務器節點(我試圖提取服務器的名稱)。我似乎正在碰到額外的冒號。
在此先感謝。
你的XML是無效的(或也許是一個張貼是不完整的)。 XML變量聲明+賦值觸發的異常:*消息9459,級別16,狀態1,行1. XML解析:行6,字符93,未聲明的前綴* – har07
該XML如何生成?現有的答案是相當不錯的,但是如果XML在你發佈的時候確實存在,那麼你就麻煩了......有幾個默認命名空間,名稱空間「xars」根本就沒有聲明......這是哪裏來自?這一代是否在你的控制之下?有很多方法可以查詢這個,但它會變得醜陋和緩慢...... – Shnugo
唉,它是SSAS XMLA查詢的直接輸出,所以我無法控制返回的XML是否格式正確。 –