我的最后一个XML解析& T-Sql问了一会儿。 我有一个xml字段,其数据如下所示:
<Criminal xmlns="http://schemas.somewebpage.com/data/stuff">
<MessageContent xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
<Content>Content in here!!</Content>
<Type>Empty</Type>
</MessageContent>
</Criminal>
此代码似乎不起作用:
SELECT
Content = XmlContent.value('(/Criminal/MessageContent/Content)[1]', 'varchar(50)'),
Type = XmlContent.value('(/MessageContent/Type)[1]', 'varchar(50)')
FROM @table
...只返回NULL。
建议?
答案 0 :(得分:2)
命名空间让你沮丧。您在查询的第二部分中也缺少“/ Criminal”。尝试这样的事情:
;WITH XMLNAMESPACES(
'http://schemas.somewebpage.com/data/stuff' as ns2,
DEFAULT 'http://schemas.somewebpage.com/data/stuff'
)
SELECT
Content = XmlContent.value('(/ns2:Criminal/MessageContent/Content)[1]', 'varchar(50)'),
Type = XmlContent.value('(/ns2:Criminal/MessageContent/Type)[1]', 'varchar(50)')
FROM @table
结果:
Content Type
Content in here!! Empty