Использование xml2 для добавления дочернего узла с атрибутом

#r #xml2

Вопрос:

Я использую xml2 пакет R для редактирования 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/>
 

и в соответствии с моим пониманием документации я должен иметь возможность добавить атрибут к узлу, используя аргумент с многоточием, чтобы предоставить именованный вектор текста:

 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<- , но мой вариант использования не очень хорошо поддерживает этот метод.

Снимок документации для всех, кто не хочет ее вытаскивать: Документация из ?xml2::add_child_node

Ответ №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>")
 

Комментарии:

1. аааааааааа не могу поверить, что я не пробовал этого. Спасибо!