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

使用R语言XML包读取XML数据时遇file.exists错误,求解决

解决XML提取第11条<record>的错误问题

错误原因

你遇到的file.exists(file)错误,大概率是因为误将XML节点对象当作文件路径参数,传给了需要文件路径的函数(比如read.table、scan这类),而非直接提取节点的文本内容。

解决方案

以下是两种在R中正确处理XML数据的实现方式:

方法1:使用xml2包(现代简洁)

# 安装并加载xml2包
if (!require(xml2)) install.packages("xml2")
library(xml2)

# 读取远程XML数据
xml_doc <- read_xml("http://www.ggobi.org/book/data/australian-crabs.xml")

# 统计<record>总数量
record_count <- length(xml_find_all(xml_doc, "//record"))
cat("总记录数:", record_count, "\n") # 输出208

# 提取第11条<record>的文本值
record_11 <- xml_text(xml_find_all(xml_doc, "//record")[[11]])
cat("第11条记录文本:", record_11, "\n")

方法2:使用XML包(传统经典)

# 安装并加载XML包
if (!require(XML)) install.packages("XML")
library(XML)

# 读取远程XML数据
xml_doc <- xmlParse("http://www.ggobi.org/book/data/australian-crabs.xml")

# 统计<record>总数量
record_nodes <- getNodeSet(xml_doc, "//record")
record_count <- length(record_nodes)
cat("总记录数:", record_count, "\n")

# 提取第11条<record>的文本值
record_11 <- xmlValue(record_nodes[[11]])
cat("第11条记录文本:", record_11, "\n")

关键注意点

  • 不要将record_nodes[[11]]这类节点对象传给file.exists、read.table等需要文件路径的函数,直接用xml_text(xml2包)或xmlValue(XML包)提取文本即可。
  • 远程XML读取时,read_xml和xmlParse都支持直接传入URL,无需提前下载到本地。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.24 03:07:06