推荐使用xml2包读取XML文件,因其简洁稳定且与tidyverse兼容好;安装加载用install.packages("xml2")和library(xml2),支持本地路径或URL直接读取。
用R读取XML文件,核心是xml2包(推荐)或老版XML包。前者更简洁、稳定、与tidyverse兼容好,后者功能全但语法稍复杂。实际项目中优先选xml2。
运行以下命令安装并加载:
install.packages("xml2")
library(xml2)
支持从本地路径或URL直接读取:
doc
doc
xml_name(doc)看根节点名,xml_children(doc)查看子节点结构化提取靠xml_find_all()和xml_text()组合:
节点文本:xml_text(xml_find_all(doc, "//title"))
:xml_find_all(doc, "//item[@id='101']")
xml_attr(xml_find_all(doc, "//item")[1], "id")
若XML类似记录列表(如多条),可用xml_nodes() + map_df()(需purrr)或手动构建:
示例(假设有多个含和):
persons
data.frame(
name = xml_text(xml_find_all(persons, "./name")),
age = as.numeric(xml_t
ext(xml_find_all(persons, "./age")))
)
不复杂但容易忽略:读取前用xml_validate()检查XML是否格式正确;中文乱码时加read_xml("file.xml", encoding = "UTF-8")。