使用xml2将子节点添加到节点

时间:2018-02-12 16:38:26

标签: r xml2

我觉得这很容易,但我无法让它发挥作用。

假设我有这个节点

{xml_document}
<var ID="V512" name="supqad1" files="F1" dcml="0" intrvl="discrete">
 [1] <location width="1"/>
 [2] <labl>\nAdministration of supplementary questionnaire 1\n</labl>
 [3] <valrng>\n  <range min="1" max="3"/>\n</valrng>
 [4] <invalrng>\n  <range min="6" max="9"/>\n</invalrng>
 [5] <sumStat type="vald">\n18644\n</sumStat>
 [6] <sumStat type="invd">\n24356\n</sumStat>
 [7] <catgry>\n  <catValu>\n1\n</catValu>\n  <labl>\nCompleted by respondent, no help from you\n</labl>\n</catgry>
 [8] <catgry>\n  <catValu>\n2\n</catValu>\n  <labl>\nCompleted by respondent, some help from you\n</labl>\n</catgry>
 [9] <catgry>\n  <catValu>\n3\n</catValu>\n  <labl>\nFace to face interview\n</labl>\n</catgry>
[10] <catgry missing="Y">\n  <catValu>\n6\n</catValu>\n  <labl>\nNot applicable\n</labl>\n</catgry>
[11] <catgry missing="Y">\n  <catValu>\n9\n</catValu>\n  <labl>\nNo answer\n</labl>\n</catgry>
[12] <varFormat type="numeric" schema="other"/>

我只想将第13个孩子添加到节点中,如下所示:

<whatever> <other> hello </other> </whatever>

我确实查看了来自xml2的修改小插图但我无法使其工作,因为add_new_child<个字符转换为搜索到的xml字符。

有什么想法吗?

test.xml

<var ID="V512" name="supqad1" files="F1" dcml="0" intrvl="discrete">
  <location width="1"/>
  <labl>
Administration of supplementary questionnaire 1
</labl>
  <valrng>
    <range min="1" max="3"/>
  </valrng>
  <invalrng>
    <range min="6" max="9"/>
  </invalrng>
  <sumStat type="vald">
18644
</sumStat>
  <sumStat type="invd">
24356
</sumStat>
  <catgry>
    <catValu>
1
</catValu>
    <labl>
Completed by respondent, no help from you
</labl>
  </catgry>
  <catgry>
    <catValu>
2
</catValu>
    <labl>
Completed by respondent, some help from you
</labl>
  </catgry>
  <catgry>
    <catValu>
3
</catValu>
    <labl>
Face to face interview
</labl>
  </catgry>
  <catgry missing="Y">
    <catValu>
6
</catValu>
    <labl>
Not applicable
</labl>
  </catgry>
  <catgry missing="Y">
    <catValu>
9
</catValu>
    <labl>
No answer
</labl>
  </catgry>
  <varFormat type="numeric" schema="other"/>
</var>

2 个答案:

答案 0 :(得分:0)

您可以像这样添加新节点:

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

my_xml
{xml_document}
<fruits>
[1] <apple/>
[2] <banana/>
[3] <grape/>

my_xml %>% 
  xml_add_child("whatever") %>%
  xml_add_child("other", "hello")

my_xml
{xml_document}
<fruits>
[1] <apple/>
[2] <banana/>
[3] <grape/>
[4] <whatever>\n  <other>hello</other>\n</whatever>

答案 1 :(得分:0)

作为替代方案,在xml2小插图之后,使用与史蒂文相同的示例:

my_xml <- read_xml("<fruits><apple/><banana/><grape/></fruits>")
xml_add_child(my_xml, read_xml("<whatever> <other> hello </other> </whatever>"))