(おそらく、ほとんど)常にループと条件のブルートフォースの組み合わせを思い付くことができますが、これの正確な構造と複雑さはあなたの仮定に依存します。
たとえば、既知の最大深度が2(例のように親ノード=c("a", "b")
と子ノード=c("c", "d")
に加えて、候補のターゲット子ノードの既知のリスト(たとえば、「c」と「d」)であるが、親が不明であると仮定します。 -子の関係、あなたはこれを行うことができます:
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