2011-11-16 2 views
5

SQL을 사용하여 RSS 피드에서 dc : creator 값을 얻는 방법을 잘 모르겠습니다. , 이것은 잘 작동SQL XML을 사용하여 dc : creator 값 얻기

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) 

: pubDate의 예 : 나는이 같은 것을 사용 -

내가 값을 얻기 위해이 같은 것을 사용 내 SQL에서
<rss xmlns:dc="http://purl.org/dc/elements/1.1/" version="2.0"> 
<channel> 
    <title>Foobar RSS</title> 
    <link>http://www.foobar.com/</link> 
    <description>RSS feed</description> 
    <language>en</language> 
    <ttl>15</ttl> 
    <item> 
     <title>This is my title</title> 
     <link>http://www.foobar.com/link/blabla</link> 
     <description>Bla..bla..bla..</description> 
     <dc:creator>John Doe</dc:creator> 
     <guid isPermaLink="false">00082EA751F1D905DE00E7CFA2417DA9</guid> 
     <pubDate>Wed, 26 Oct 2011 00:00:00 +0200</pubDate> 
    </item> 
</channel> 
</rss> 

가 : 이 내 XML/RSS 피드입니다 내가 직류 얻기 위해 노력하고 있어요 때 : 나는 RSS 피드에서 여러 열을 선택 할 수 있어야합니다

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. 

: 작성자 값 '홍길동'을, 다음은 나에게 오류를 제공합니다. 누구든지 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"에서 중단됩니다. 어떻게 든 네임 스페이스를 명령문에 직접 포함시킬 수 있습니까? 이 같은

답변

8

시도 뭔가 :

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) 
관련 문제