推荐使用xml2包处理XML数据,安装加载后可用read_xml()读取本地或网络文件。

读取和处理XML数据在R语言中可以通过xml2或XML包来实现。目前推荐使用xml2,因为它语法简洁、与tidyverse风格兼容,且维护更活跃。
安装并加载xml2包
如果尚未安装xml2包,先运行:
install.packages("xml2")library(xml2)
读取本地或网络XML文件
使用read_xml()函数可以读取本地路径或URL上的XML文件。
# 读取本地XML文件doc
# 或读取网络上的XML
doc
查看XML结构
了解XML文档结构是提取数据的关键。可用以下方法浏览:
- xml_name(doc):查看根节点名称
- xml_children(doc):获取所有子节点
- xml_text(node):提取节点中的文本内容
- xml_attr(node, "属性名"):获取某个属性值
例如查看根节点:
root xml_name(root) # 输出根标签名提取数据:按标签名查找节点
使用xml_find_all()配合XPath语法查找指定节点。
# 查找所有名为item的节点(假设层级为//data/item)nodes
然后逐个提取字段:
将XML数据转为数据框
提取多个字段后,可合并成data.frame便于分析:
df id = ids,title = titles,
price = prices,
stringsAsFactors = FALSE
)
这样就得到了结构化的表格数据,可用于后续统计分析或可视化。
处理嵌套或复杂结构
若XML存在多层嵌套,需逐级解析。例如:
# 获取每个item下的details子节点details color size
注意检查缺失值,某些节点可能为空,建议用length()判断是否存在。
小贴士与常见问题
- 使用Chrome开发者工具查看网页源码中的XML结构,有助于编写正确XPath
- XPath中//表示任意层级,/表示直接子节点
- 中文文本一般无需额外编码设置,但若乱码可尝试Encoding(text)
- 大型XML文件建议分块处理,避免内存溢出
基本上就这些。掌握read_xml、xml_find_all、xml_text和xml_attr这四个核心函数,就能应对大多数XML数据处理需求。










