R语言怎么读取XML文件 XML包使用教程

推荐使用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")