推荐使用xml2包读取XML文件,因其简洁稳定且与tidyverse兼容好;安装加载用install.packages("xml2")和library(xml2),支持本地路径或URL直接读取。

用R读取XML文件,核心是xml2包(推荐)或老版XML包。前者更简洁、稳定、与tidyverse兼容好,后者功能全但语法稍复杂。实际项目中优先选xml2。
安装并加载xml2包
运行以下命令安装并加载:
install.packages("xml2")
library(xml2)
读取XML文件(本地或网络)
支持从本地路径或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类似记录列表(如多条),可用xml_nodes() + map_df()(需purrr)或手动构建:
示例(假设有多个含和):
persons
data.frame(
name = xml_text(xml_find_all(persons, "./name")),
age = as.numeric(xml_text(xml_find_all(persons, "./age")))
)
不复杂但容易忽略:读取前用xml_validate()检查XML是否格式正确;中文乱码时加read_xml("file.xml", encoding = "UTF-8")。










