You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何使用R的xml2包将列表转换为自定义结构的XML文件

回答

xml2的as_xml_document对嵌套列表的默认解析规则比较简单,遇到原子向量会直接取首个元素作为节点文本,不会自动生成多层子节点,也不支持灵活自定义标签和属性,因此这种多层嵌套的自定义XML更适合通过手动遍历列表生成节点实现,可控性更高。

完整实现代码如下:

# 加载依赖包
library(xml2)

# 原始数据列表
r_list <- list(
  person1 = list(starts = letters[1:3], ends = letters[4:6]),
  person2 = list(starts = LETTERS[1:4], ends = LETTERS[5:8])
)

# 创建根节点
new_xml <- xml_new_root(.value = "category", name = "personList")

# 遍历所有人员数据
for (person_name in names(r_list)) {
  # 生成pers标签,添加name属性
  pers_node <- xml_add_child(new_xml, "pers", name = person_name)
  # 遍历当前人员的starts、ends字段
  for (field_name in names(r_list[[person_name]])) {
    # 生成对应字段标签
    field_node <- xml_add_child(pers_node, field_name)
    # 遍历字段下所有值,生成value子标签
    for (val in r_list[[person_name]][[field_name]]) {
      xml_add_child(field_node, "value", val)
    }
  }
}

# 打印查看生成的XML
print(new_xml, options = "format")

# 如需导出为本地XML文件,执行以下代码即可,format参数会自动添加缩进优化可读性
# write_xml(new_xml, "person_list.xml", options = "format")

运行代码后生成的XML结构和你预期的完全一致。


内容的提问来源于stack exchange,提问作者symduk

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.25 12:27:04