https://github.com/cran/XML
Tip revision: 9568fa60a03fc8001e0af3298f483646c819f011 authored by CRAN Team on 05 July 2020, 13:13:52 UTC
version 3.99-0.4
version 3.99-0.4
Tip revision: 9568fa6
getElements.S
getElements =
function(elementNames)
{
els = list()
startElement = function(node, ...) {
if(xmlName(node) %in% elementNames)
els[[length(els) + 1]] <<- node
node
}
list(startElement = startElement, els = function() els)
}
#
h = getElements("a")
htmlTreeParse("http://www.omegahat.net/RSXML/index.html", handlers = h)
links = sapply(h$els(), function(x) xmlGetAttr(x, "href"))
# Of course, we could do these two steps in one with a handler
# function like
#
getLinks = function() {
links = character()
list(a = function(x) links <<- c(links, xmlGetAttr(x, "href")),
links = function() links)
}
# h = getLinks()
# htmlTreeParse("http://www.omegahat.net/RSXML/index.html", handlers = h)
# h$links()
# If we want the nodes, we can use getElements. Otherwise, we
# can use a specialize handler that converts the information on the
# fly into the data structures we want at the end.