使用SQLXML获取dc:creator的值

使用SQLXML获取dc:creator的值,sql,namespaces,rss,xquery,Sql,Namespaces,Rss,Xquery,我不确定如何使用SQL从RSS提要获取dc:creator的值。 这是我的xml/rss提要: Foobar RSS http://www.foobar.com/ RSS源 EN 15 这是我的头衔 http://www.foobar.com/link/blabla 布拉..布拉..布拉。。 无名氏 00082EA751F1D905DE00E7CFA2417DA9 2011年10月26日星期三00:00:00+0200 在我的SQL中,我使用这样的方法来获取值-例如,对于pubDate,我使

我不确定如何使用SQL从RSS提要获取dc:creator的值。 这是我的xml/rss提要:


Foobar RSS
http://www.foobar.com/
RSS源
EN
15
这是我的头衔
http://www.foobar.com/link/blabla
布拉..布拉..布拉。。
无名氏
00082EA751F1D905DE00E7CFA2417DA9
2011年10月26日星期三00:00:00+0200
在我的SQL中,我使用这样的方法来获取值-例如,对于pubDate,我使用这样的方法:

DECLARE @xml XML
SET @xml = cast('my rss feed here' AS xml) 

SELECT
convert(datetime,substring(T.nref.value('pubDate[1]','nvarchar(100)'),6,20)) as pubdate,
FROM @xml.nodes('//item') AS T(nref)
DECLARE @xml XML
SET @xml = cast('my rss feed here' AS xml) 

;WITH XMLNAMESPACES('http://purl.org/dc/elements/1.1/' AS dc)
SELECT
    @xml.value('(rss/channel/item/dc:creator)[1]', 'nvarchar(100)')
这很好,但当我试图获取dc:creator值“John Doe”时,以下内容只给了我一个错误:

SELECT
   T.nref.value('dc:creator','nvarchar(100)') as creator
FROM @xml.nodes('//item') AS T(nref)

   error: 
   XQuery [value()]: The name "dc" does not denote a namespace.
我需要能够从rss提要中选择多个列。谁能提供一个解决方案或方向来获得dc:creator的价值

我还有另一个问题-如果在子选择中执行,您将如何构造代码

E.g. 
INSERT INTO RSSResults (ID, pubDate)
SELECT @ID, tbl.pubDate FROM (     

;WITH XMLNAMESPACES('http://purl.org/dc/elements/1.1/' AS dc) 
    SELECT 
       RSS.Item.value('(dc:creator)[1]', 'nvarchar(100)') as pubDate
    FROM 
       @xml.nodes('/rss/channel/item') as RSS(Item)) AS tbl 

代码在“WITH XMLNAMESPACES”处中断。是否可以以某种方式将名称空间直接包含在语句中?

尝试以下操作:

DECLARE @xml XML
SET @xml = cast('my rss feed here' AS xml) 

SELECT
convert(datetime,substring(T.nref.value('pubDate[1]','nvarchar(100)'),6,20)) as pubdate,
FROM @xml.nodes('//item') AS T(nref)
DECLARE @xml XML
SET @xml = cast('my rss feed here' AS xml) 

;WITH XMLNAMESPACES('http://purl.org/dc/elements/1.1/' AS dc)
SELECT
    @xml.value('(rss/channel/item/dc:creator)[1]', 'nvarchar(100)')
如果需要捕获多个项目,请尝试以下操作:

DECLARE @xml XML
SET @xml = cast('my rss feed here' AS xml) 

;WITH XMLNAMESPACES('http://purl.org/dc/elements/1.1/' AS dc)
SELECT
    RSS.Item.value('(dc:creator)[1]', 'nvarchar(100)')
FROM
    @xml.nodes('/rss/channel/item') as RSS(Item)