2

我觉得这很容易,但我无法让它工作。

假设我有这个节点

{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<字符转换为 scaped 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>
4

2 回答 2

2

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

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>
于 2018-03-12T20:29:16.710 回答
0

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

my_xml <- read_xml("<fruits><apple/><banana/><grape/></fruits>")
xml_add_child(my_xml, read_xml("<whatever> <other> hello </other> </whatever>"))
于 2020-05-09T08:23:22.017 回答