使用iSeries上的SQL DB2从Web获取XML [英] Get an XML from WEB with a SQL DB2 on Iseries

查看:0
本文介绍了使用iSeries上的SQL DB2从Web获取XML的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我必须下载在此页面中生成的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值为小写

这篇关于使用iSeries上的SQL DB2从Web获取XML的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆