【发布时间】:2021-05-30 01:59:25
【问题描述】:
我想从 Web XML URL 获取数据并将结果转换为带有值的标准表。
我有以下代码:
IF OBJECT_ID('tempdb..#xml') IS NOT NULL
DROP TABLE #xml
CREATE TABLE #xml (yourXML XML)
GO
DECLARE @URL NVARCHAR(max)
SELECT @URL = 'https://www.boi.org.il/currency.xml'
DECLARE @Response varchar(8000)
DECLARE @XML xml
DECLARE @Obj int
DECLARE @Result int
DECLARE @HTTPStatus int
DECLARE @ErrorMsg varchar(MAX)
EXEC @Result = sp_OACreate 'MSXML2.XMLHttp', @Obj OUT
EXEC @Result = sp_OAMethod @Obj, 'open', NULL, 'GET', @URL, false
EXEC @Result = sp_OAMethod @Obj, 'setRequestHeader', NULL, 'Content-Type', 'application/x-www-form-urlencoded'
EXEC @Result = sp_OAMethod @Obj, send, NULL, ''
EXEC @Result = sp_OAGetProperty @Obj, 'status', @HTTPStatus OUT
INSERT #xml ( yourXML )
EXEC @Result = sp_OAGetProperty @Obj, 'responseXML.xml'--, @Response OUT
SELECT x.*, y.c.query('.')
FROM #xml x
CROSS APPLY x.yourXML.nodes('/CURRENCIES/CURRENCY') y(c)
现在这段代码的结果是一个 XML“超链接”查询,我想把它作为一个标准值查询结果,最后我可以处理数据。
查询结果结构列应为:
LAST_UPDATE | NAME | UNIT | CURRENCYCODE | RATE
【问题讨论】:
标签: sql sql-server xml tsql xml-parsing