您可以(可能,几乎)总是想出循环和条件的强力组合,但它的确切结构和复杂性将取决于您的假设。
例如,假设已知最大深度为 2(父节点 =c("a", "b")
和子节点 =c("c", "d")
如示例中所示,加上已知的候选目标子节点列表(例如,“c”和“d”),但未知父节点-child 关系,你可以这样做:
replacement.list <- list(c = 2)
test.list <- xmlToList(test)
parent.names <- names(test.list)
for(replacement.name in names(replacement.list)){
for(parent.name in parent.names){
child.names <- names(test.list[[parent.name]])
if(replacement.name %in% child.names){
xmlChildren(test[[parent.name]][[replacement.name]]) <- replacement.list[[replacement.name]]
}
}
}
更新:使用递归函数的更优雅的方法在这里:https ://stackoverflow.com/a/26154446/199217