【问题标题】:Using xml2 to add child node with an attribute使用xml2添加具有属性的子节点
【发布时间】:2021-10-06 19:11:58
【问题描述】:

我正在使用 R 的 xml2 包来编辑 XML 文档。我想添加一个具有特定 XML 属性的节点,但我似乎不明白 add_child_node 的语法。

添加节点效果很好:

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

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

根据我对文档的理解,我应该能够通过使用 ellipsis 参数向节点添加一个属性,以提供一个命名的文本向量:

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

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

但是,这似乎只是将文本插入节点,就像文本未命名时一样。该属性根本不显示。

我想要的是这个:

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

有什么想法吗?我知道我可以在事后使用xml_attr&lt;- 手动设置属性,但我的用例不太支持该方法。

文档的快照,供不想拉起它的任何人使用:

【问题讨论】:

    标签: r xml2


    【解决方案1】:

    只需删除c()

    xml_add_child(.x = my_xml, .value = "coconut", id = "new")
    

    -输出

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

    数据

    my_xml <- read_xml("<fruits><apple/><banana/></fruits>")
    

    【讨论】:

    • aaaaaargh 不敢相信我没有尝试过这个。谢谢!
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2018-09-16
    • 1970-01-01
    • 1970-01-01
    • 2019-11-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多