You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何从XML网页提取BIS每日汇率历史核心数据

BIS每日汇率XML数据提取方案

核心思路

BIS返回的是SDMX标准格式的XML文件,核心数据都嵌套在指定命名空间的观测节点中,需要先处理命名空间,再定位数据节点提取属性。

具体实现步骤

  • 定义命名空间:从XML根节点的xmlns属性中提取message等命名空间,确保节点查找不失效。
  • 定位数据节点:用xml_find_all定位message:DataSet下的所有message:Obs节点,这些就是每日汇率的核心数据条目。
  • 提取属性字段:从每个Obs节点中提取日期、汇率值、货币代码等属性,转换为易处理的数据框格式。

完整代码示例

library(xml2)
library(dplyr)

# 读取XML数据源
u <- "https://stats.bis.org/api/v1/data/WS_XRU_D/D.RU../all?detail=full"
d <- xml2::read_xml(u)

# 解析XML的命名空间
ns <- xml_ns(d)

# 抓取所有观测数据节点
observations <- xml_find_all(d, ".//message:Obs", ns)

# 提取关键属性并转换为数据框
exchange_rate_data <- tibble(
  日期 = xml_attr(observations, "TIME_PERIOD"),
  货币代码 = xml_attr(observations, "CURRENCY"),
  汇率值 = as.numeric(xml_attr(observations, "OBS_VALUE")),
  系列ID = xml_attr(observations, "SERIES_KEY")
)

# 查看前几行数据
head(exchange_rate_data)

注意事项

  • 若XML结构有变动,可通过xml_structure(d)查看完整节点结构,调整节点路径或属性名称。
  • 提取的汇率值默认是字符型,需转换为数值型才能进行后续计算。
  • 可使用dplyr的filter()函数筛选特定日期范围或货币类型的数据。

内容的提问来源于stack exchange,提问作者Alex

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.12 09:45:33