인터넷 xml rss 피드 mssql db 저장 방법

인터넷 xml rss 피드 mssql db 저장 방법은 검색엔진 등록을 위해 사이트 최근게시물 등의 정보를 구글, 네이버, 다음 등 검색포탈에 등록을을 하기위해 RSS feed를 제공하는데 dbd에서 xml 변환함수를 활용해 db화 시켜 저장합니다.

인터넷 xml rss 피드 mssql db 저장 방법

저장 프로시저는 2개(httpGET,LastBolgPosts)로 존재하며, 둘다 같은 DB에서 작성되어야합니다.

CREATE PROCEDURE [dbo].[httpGET]
(
    @url NVARCHAR(4000),
    @ResponseText NVARCHAR(MAX) OUTPUT
)
AS
BEGIN
    BEGIN TRY
        DECLARE @Object as Int;
          
        EXEC sp_OACreate 'MSXML2.XMLHTTP', @Object OUT;
        EXEC sp_OAMethod @Object, 'open', NULL, 'GET', @url,'false';
        EXEC sp_OAMethod @Object, 'send', null;
     
        DECLARE @TABLEVAR TABLE (responseXml VARCHAR(MAX))
        INSERT INTO @TABLEVAR
            EXEC sp_OAGetProperty @Object, 'responseText';
        SET @ResponseText = '';
         
        SELECT @ResponseText = responseXml FROM @TABLEVAR
 
    END TRY
    BEGIN CATCH
        print 'Exception in httpGET';
    END CATCH
    Exec sp_OADestroy @Object;
END
 
GO
CREATE PROCEDURE [dbo].[LatestBlogPosts]
(
    @url NVARCHAR(4000)
)
AS
BEGIN
    BEGIN TRY
        DECLARE @ResponseText as NVARCHAR(MAX) = '';
        EXEC [dbo].[httpGET] @url = @url, @ResponseText = @ResponseText OUTPUT;
 
        DECLARE @xml XML = cast(REPLACE(@ResponseText, 'encoding="UTF-8"', '') as xml);
         
        SELECT  x.xmlNode.value('(title)[1]', 'varchar(400)') as BlogTitle,
                x.xmlNode.value('(link)[1]', 'varchar(400)') as BlogUrl,
                x.xmlNode.value('(pubDate)[1]', 'varchar(400)') as BlogDate,
                x.xmlNode.value('(description)[1]', 'varchar(400)') as BlogDescription
        FROM @xml.nodes('/rss/channel/item') x(xmlNode)
 
    END TRY
    BEGIN CATCH
        print 'Exception';
    END CATCH
END
GO
EXEC [dbo].[LatestBlogPosts] @url = 'https://stevestedman.com/feed/';
인터넷 xml rss 피드 mssql db 저장 방법

이제 사이트나 게시판 블로그등 rss, xml, feed를 제공하는 사이트를 db로 바로 저장할수있습니다.