使用xmlValue替换XML元素中的数字

时间:2015-02-15 01:03:16

标签: xml r

我有一堆数字

preKId_2015 = c(242938L, 339402L, 361888L, 428033L, 442546L, 309790L, 355662L, 
458179L, 465105L, 490383L, 524644L, 526614L, 539453L, 555516L, 
569709L)

我有一个xml文件,其中包含元素之间的其他id值

<input-id> 
"PreKId"
12344 
33433
23343
93893
23333
</input-id>

我正在尝试使用preKId_2015中的值替换这些预先存在的值。我试过了

 doc <- xmlParseDoc("C:/... ProjectKids/test12.xml")
 nodes <- getNodeSet(doc, "//input-id")[[1]]
 xmlValue(nodes) =  replace(xmlValue(nodes),xmlValue(nodes),preKId_2015)

我收到警告,没有任何反应

 Warning message:
 In replace(xmlValue(nodes), xmlValue(nodes),preKId_2015) :
   number of items to replace is not a multiple of replacement length

需要帮助

1 个答案:

答案 0 :(得分:1)

在插入新节点之前尝试removeChildren

doc <- xmlParseDoc("C:/... ProjectKids/test12.xml")
nodes <- getNodeSet(doc, "//input-id")[[1]]
removeChildren(ns, .all=TRUE)

# as sub-elements
kids <- lapply( preKId_2015, function(x) newXMLNode("id", x ))
addChildren(ns, kids = kids, append = FALSE)

# or insert it as text node:
addChildren(ns, newXMLTextNode(paste(preKId_2015, collapse = "\n")))