[SQL]使用OPENXML
練習一下
問題描述
希望從RSS網站得到的訊息格式化輸出
解決方式
以OPENXML的方式將從網站得到的XML資料格式化後以表格方式呈現,這裡以<<聯合新聞網>>國內要聞的RSS訂閱做練習為例
http://udn.com/udnrss/BREAKINGNEWS1.xml
自訂函式 dbo.uf_FetchHtmlContent 可以參照下列網址建立
http://www.dotblogs.com.tw/killysss/archive/2012/09/05/74615.aspx
執行的SQL
-- 資料來源:德瑞克老師的上課筆記+自行修改
USE ProductDB
GO
-- 把將網頁的資料擷取出來
-- function dbo.uf_FetchHtmlContent 可以參照下列網址建立
-- http://www.dotblogs.com.tw/killysss/archive/2012/09/05/74615.aspx
-- 內容要轉型成xml型態,如果檔頭包含<?xml version="1.0" encoding="utf-8"?>,要將檔頭的字串去除
-- i.e SELECT substring(dbo.uf_FetchHtmlContent(@url),39,len(dbo.uf_FetchHtmlContent(@url))-38) AS [網頁內容]
-- 這裡以<<聯合新聞網>>國內要聞的RSS訂閱做練習
DECLARE @idoc int;
DECLARE @url nvarchar(500);
DECLARE @content nvarchar(max);
SET @url = N'http://udn.com/udnrss/BREAKINGNEWS1.xml';
SET @content = substring(dbo.uf_FetchHtmlContent(@url), 40, len(dbo.uf_FetchHtmlContent(@url)) - 39);
EXEC sp_xml_preparedocument @idoc OUTPUT, @content
SELECT *
FROM
openxml(@idoc, '/rss/channel/item', 2)
WITH (
title NVARCHAR(50),
link NVARCHAR(256),
pubDate NVARCHAR(50),
[description] NVARCHAR(250),
[guid] NVARCHAR(20))
EXEC sp_xml_removedocument @idoc
結果畫面
參考資料
德瑞克老師的上課筆記