使用R从XML提取数据并按行列展示(含曾孙节点)
R处理XML多层节点提取与两列展示方案
- 先加载XML处理包
xml2(未安装的话先运行install.packages("xml2")) - 读取目标XML文件:
library(xml2) doc <- read_xml("leaf_default.xml") - 编写递归函数遍历所有层级节点,动态提取变量名与对应值:
extract_all_vars <- function(node) { var_result <- list() child_nodes <- xml_children(node) for (child in child_nodes) { # 若当前节点还有子节点,递归深入提取 if (length(xml_children(child)) > 0) { var_result <- c(var_result, extract_all_vars(child)) } else { # 提取叶子节点的名称和文本值 var_name <- xml_name(child) var_val <- xml_text(child) var_result[[var_name]] <- var_val } } return(var_result) } - 调用函数提取所有层级的变量:
all_variables <- extract_all_vars(doc) - 转换为每行两列的数据框格式:
var_df <- data.frame( 变量名 = names(all_variables), 值 = unlist(all_variables), stringsAsFactors = FALSE )
这个方案通过递归逻辑自动遍历XML的所有嵌套层级,不管是孙节点还是更深的曾孙节点,都能动态抓取变量名和对应值,完全不需要手动指定需要处理的节点(比如reftemp、atref这类包含子节点的父节点),最终生成的var_df就是你需要的每行两列的展示格式。
内容的提问来源于stack exchange,提问作者bob brown
相关产品推荐
相关产品推荐

