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

R语言xml2包使用xml_add_child添加带属性子节点的问题

正确实现语法

你需要调整参数传入方式,有两种常用写法适配不同场景:

1. 手动直接指定属性

直接将属性作为命名参数传入xml_add_child即可:

library(xml2)
my_xml <- read_xml("<fruits><apple/><banana/></fruits>")
xml_add_child(.x = my_xml, .value = "coconut", id = "new")
my_xml

# {xml_document}
# <fruits>
# [1] <apple/>
# [2] <banana/>
# [3] <coconut id="new"/>

2. 属性已提前存入命名向量的场景

如果你的属性是提前存在命名向量中的,需要用!!!操作符对向量进行解包后传入:

library(xml2)
library(rlang)

my_xml <- read_xml("<fruits><apple/><banana/></fruits>")
# 提前定义属性向量
attrs <- c(id = "new", weight = "1kg")
xml_add_child(.x = my_xml, .value = "coconut", !!!attrs)
my_xml

# {xml_document}
# <fruits>
# [1] <apple/>
# [2] <banana/>
# [3] <coconut id="new" weight="1kg"/>

错误原因说明

你之前的写法是将整个命名向量作为单一位置参数传入函数,xml_add_child会把所有未命名的位置参数识别为节点的文本内容,因此才会把向量值"new"写入<coconut>标签内部。只有当传入的参数本身是独立的命名参数时,才会被函数解析为新增节点的XML属性。


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.01 09:15:03