Я только что понял, что вы хотите заменить все дочерние узлы. Вот код для достижения этого.
Сценарий использует lapply
для открытия каждого файла, анализа XML-кода, удаления всех дочерних узлов head
и добавления к нему элемента script
с аргументом src
.
Заменить все дочерние узлы
library(XML)
files <- list.files(full.names = T, pattern = "*.html")
lapply(files, function(f) {
content <- xmlInternalTreeParse(f, isHTML = T)
# get head node
headNode <- getNodeSet(content, path = "//head")
# remove all child nodes
do.call(removeChildren, args = list(kids = names(xmlChildren(headNode[[1]])), node = headNode[[1]]))
# create new nodes
newNode <- newXMLNode("script", attrs = list(src = "myScript.js"))
# add new nodes
addChildren(headNode[[1]], newNode)
saveXML(doc = content, file = f)
})
Добавить новый узел
library(XML)
files <- list.files(full.names = T, pattern = "*.html")
lapply(files, function(f) {
content <- xmlInternalTreeParse(f, isHTML = T)
headNode <- getNodeSet(content, path = "//head")
newNode <- newXMLNode("script", attrs = list(src = "myScript.js"))
addChildren(headNode[[1]], newNode)
saveXML(doc = content, file = f)
})