【发布时间】:2016-07-17 06:38:01
【问题描述】:
我有以下 XML:
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)
我一直在试图弄清楚如何通过
提前致谢。
【问题讨论】:
-
您的 XML 无效(或者发布的 XML 不完整)。 XML 变量声明 + 赋值触发异常:Msg 9459,Level 16,State 1,Line 1。XML 解析:第 6 行,字符 93,未声明的前缀
-
这个 XML 是如何生成的?现有的答案还不错,但是如果 XML 确实像您发布的那样存在,那么您就有麻烦了...有几个默认命名空间,命名空间
xars根本没有声明...这是在哪里来自?这一代人在你的控制之下吗?有办法查询这个,但它会很丑而且很慢...... -
唉,它是 SSAS XMLA 查询的直接输出,所以我无法控制返回的 XML 格式是否正确。
标签: sql-server xml namespaces