R语言怎么读取和处理XML数据

R语言处理XML数据推荐使用xml2包,需先install.packages("xml2")安装并library(xml2)加载,支持通过read_xml()读取本地文件或URL。

R语言读取和处理XML数据,核心是用xml2包(推荐)或XML包。前者语法简洁、稳定性好,是目前主流选择。

安装并加载xml2包

如果没装过,先运行:

install.packages("xml2")
加载后即可使用:

library(xml2)

从文件或URL读取XML

支持本地文件路径或网页地址:

  • 读本地XML文件:doc
  • 读网络XML(如API返回):doc
  • 读字符串内容:doc abc")

提取节点和文本内容

常用函数有xml_find_all()xml_text()xml_attr()

  • 找所有节点:items
  • 提取文本:xml_text(items) → 得到字符向量
  • 提取属性值:xml_attr(items, "id")(假设
  • 按层级查找更准:xml_find_all(doc, "/root/item/name")

转成数据框(结构化处理)

如果XML是规则的列表结构(比如多个同级),可手动构建data.frame:

records <- xml_find_all(doc, "//record")
df <- data.frame(
name = xml_text(xml_find_all(records, "./name")),
age = as.numeric(xml_text(xml_find_all(records, "./age"))),
id = xml_attr(records, "id")
)

对嵌套深或不规则XML,建议先用as_list()转为R列表再处理:as_list(doc),便于调试结构。

基本上就这些。不复杂但容易忽略的是:注意编码(中文乱码时加encoding = "UTF-8"参数)、检查节点是否存在(用length()>0防报错)、以及用//前缀做模糊匹配更灵活。