使用 Iseries 上的 SQL DB2 从 WEB 获取 XML
Get an XML from WEB with a SQL DB2 on Iseries
我必须下载此页面中生成的XML:
https://www.backend-rates.ezv.admin.ch/api/xmldaily?d=20210923&locale=it
唯一的参数是 YYYYMMDD 格式的日期。
我知道有一些 SQL 函数可以做到这一点,但我不知道如何解决这个问题。
编辑:
我试试这个:
SELECT * FROM XMLTABLE(
XMLNAMESPACES (DEFAULT 'https://www.backend-rates.ezv.admin.ch/xmldaily',
'https://www.backend-rates.ezv.admin.ch/api/xmldaily?d=20210922&locale=it' AS "doc" ) ,
'doc/wechselkurse/devise' PASSING XMLPARSE
( DOCUMENT SYSTOOLS.HTTPGETBLOB
('https://www.backend-rates.ezv.admin.ch/dailyrates.xsd'
, ''))
COLUMNS
code Char(3) PATH 'code',
waehrung char(10) PATH 'waehrung' ,
kurs decfloat PATH 'kurz'
)
where code = 'USD'
但是我得到的结果是空的,你能帮我找出错误吗?
多个问题,列在查询下方,因为当不在下方时它们会终止格式化
SELECT * from
XMLTABLE(
XMLNAMESPACES (DEFAULT 'https://www.backend-rates.ezv.admin.ch/xmldaily'),
'$doc/wechselkurse/devise'
PASSING XMLPARSE
(DOCUMENT SYSTOOLS.HTTPGETCLOB('https://www.backend-rates.ezv.admin.ch/api/xmldaily?d=20210922&locale=it', '')) as "doc"
COLUMNS
code Char(3) PATH '@code',
waehrung char(10) PATH 'waehrung' ,
kurs decfloat PATH 'kurs'
)
where code = 'usd'
- 您不需要将文档添加到命名空间,因为它不是命名空间
- 您下载和解析的不是文档,而是可以验证文档的架构
- 您必须在 xpath 表达式中为您的文档命名,即使用 as 'doc'(而不是像我之前的回答中那样的“$doc”)
- 您可以在 xpath 表达式中将该名称称为 $doc
code
是一个属性,您可以使用 @code
获取它的值
code
值为小写
我必须下载此页面中生成的XML:
https://www.backend-rates.ezv.admin.ch/api/xmldaily?d=20210923&locale=it
唯一的参数是 YYYYMMDD 格式的日期。
我知道有一些 SQL 函数可以做到这一点,但我不知道如何解决这个问题。
编辑: 我试试这个:
SELECT * FROM XMLTABLE(
XMLNAMESPACES (DEFAULT 'https://www.backend-rates.ezv.admin.ch/xmldaily',
'https://www.backend-rates.ezv.admin.ch/api/xmldaily?d=20210922&locale=it' AS "doc" ) ,
'doc/wechselkurse/devise' PASSING XMLPARSE
( DOCUMENT SYSTOOLS.HTTPGETBLOB
('https://www.backend-rates.ezv.admin.ch/dailyrates.xsd'
, ''))
COLUMNS
code Char(3) PATH 'code',
waehrung char(10) PATH 'waehrung' ,
kurs decfloat PATH 'kurz'
)
where code = 'USD'
但是我得到的结果是空的,你能帮我找出错误吗?
多个问题,列在查询下方,因为当不在下方时它们会终止格式化
SELECT * from
XMLTABLE(
XMLNAMESPACES (DEFAULT 'https://www.backend-rates.ezv.admin.ch/xmldaily'),
'$doc/wechselkurse/devise'
PASSING XMLPARSE
(DOCUMENT SYSTOOLS.HTTPGETCLOB('https://www.backend-rates.ezv.admin.ch/api/xmldaily?d=20210922&locale=it', '')) as "doc"
COLUMNS
code Char(3) PATH '@code',
waehrung char(10) PATH 'waehrung' ,
kurs decfloat PATH 'kurs'
)
where code = 'usd'
- 您不需要将文档添加到命名空间,因为它不是命名空间
- 您下载和解析的不是文档,而是可以验证文档的架构
- 您必须在 xpath 表达式中为您的文档命名,即使用 as 'doc'(而不是像我之前的回答中那样的“$doc”)
- 您可以在 xpath 表达式中将该名称称为 $doc
code
是一个属性,您可以使用@code
获取它的值
code
值为小写