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

如何在R中解析ECB API响应以获取规整的日期-数值数据

解析欧洲中央银行API返回的XML数据(R语言)

你已经通过httr2获取到ECB API的XML响应,接下来可以通过xml2工具包(配合tidyverse)解析出「日期-数值」格式的规整数据,以下是通用处理步骤:

1. 补充依赖包

首先确保安装并加载xml2(用于XML节点操作):

install.packages("xml2")
library(xml2)

2. 提取并解析XML节点

ECB的API返回的是SDMX格式的XML,核心数据都在<Obs>节点中——每个节点包含日期(TIME_PERIOD属性)和汇率值(OBS_VALUE子节点)。我们可以通过节点选择和属性/文本提取来整理数据:

# 重新发送请求并获取XML对象
resp <- request("https://data-api.ecb.europa.eu/service/data/EXR/M.USD.EUR.SP00.A") %>% 
  req_perform() %>% 
  resp_body_xml()

# 提取所有观测节点
obs_nodes <- xml_find_all(resp, ".//Obs")

# 从节点中提取日期和数值,转换为数据框
exchange_rates <- tibble(
  date = xml_attr(obs_nodes, "TIME_PERIOD") %>% ymd(), # 转换为标准日期格式
  rate = xml_find_first(obs_nodes, ".//OBS_VALUE") %>% xml_text() %>% as.numeric()
)

# 查看整理后的结果
head(exchange_rates)

3. 通用逻辑说明

这种方法适用于大多数返回XML格式的API:

  • 用xml_find_all()定位到存储核心数据的重复节点(比如这里的<Obs>)
  • 用xml_attr()提取节点属性,xml_find_first()+xml_text()提取子节点的文本内容
  • 最后将提取到的向量整理成数据框,并做类型转换(日期、数值等)

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.04 22:22:24