XML解析& T-SQL - 第2部分

时间:2013-11-06 14:16:33

标签: sql sql-server xml

我的最后一个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。

建议?

1 个答案:

答案 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