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

如何将美联储SSDMX/ZIP格式XML文件下载并读取到R中?

解决美联储Z1数据Zip文件损坏及读取问题

问题根源

你之前的代码出现zip file is corrupt警告,核心原因是**download.file默认以文本模式下载二进制文件**,在Windows系统下会自动转换换行符,破坏Zip文件的二进制结构,导致解压失败。

修复方案

只需要给download.file添加mode = "wb"参数(二进制模式下载),就能解决文件损坏问题。以下是完整可运行的代码,同时推荐使用更现代的xml2包处理XML数据:

# 加载所需包
library(xml2)
library(utils)

# 创建临时目录与临时Zip文件
temp_dir <- tempdir()
zip_temp <- tempfile(tmpdir = temp_dir, fileext = ".zip")

# 二进制模式下载Zip文件
download.file(
  url = "https://www.federalreserve.gov/datadownload/Output.aspx?rel=Z1&filetype=zip",
  destfile = zip_temp,
  mode = "wb",  # 关键:二进制模式避免文件损坏
  quiet = FALSE
)

# 解压Zip文件到临时目录
xml_files <- unzip(zip_temp, exdir = temp_dir)

# 查看解压得到的XML文件列表
print("解压后的XML文件路径:")
print(xml_files)

# 读取并解析第一个XML文件
xml_doc <- read_xml(xml_files[1])

# 查看XML结构(可选)
xml_structure(xml_doc)

额外解决思路

如果上述方法仍有问题,可能需要模拟浏览器请求(部分网站会拦截非浏览器的请求),可以添加用户代理参数:

download.file(
  url = "https://www.federalreserve.gov/datadownload/Output.aspx?rel=Z1&filetype=zip",
  destfile = zip_temp,
  mode = "wb",
  method = "curl",  # 需安装curl工具,Windows下可改用method="wininet"
  extra = "-A 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36'"
)

替代方案:直接下载CSV/Excel版本

如果不需要XML格式,你可以直接构造对应格式的下载链接,比如CSV版本:

csv_temp <- tempfile(tmpdir = temp_dir, fileext = ".csv")
download.file(
  url = "https://www.federalreserve.gov/datadownload/Output.aspx?rel=Z1&filetype=csv",
  destfile = csv_temp,
  mode = "wb"
)

# 读取CSV数据
csv_data <- read.csv(csv_temp)

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.23 12:18:08