These provide a simplified syntax for extracting the children of an XML node.
# S3 method for XMLNode
[(x, ..., all = FALSE)
# S3 method for XMLNode
[[(x, ...)
# S3 method for XMLDocumentContent
[[(x, ...)
the XML node or the top-level document content in which the children are to be accessed.
The XMLDocumentContent
is the container for the top-level node that also contains information
such as the URI/filename and XML version. This accessor method is merely a convenience to get
access to children of the top-level node.
the identifiers for the children to be retrieved,
given as integer indices, names, etc. in the usual format for the
generic link{[}
and link{[[}
operators
logical value. When … is a character vector, a value
of TRUE
for all
means to retrieve all of the
nodes with those names rather than just the first one.
FALSE
gives the usual result of subsetting a list by name
which gives just the first element.
This allows us to avoid the idiom
node[ names(node) == "bob" ]
which is complicated when node is the result of an inline
computation
and instead we use
node["bob", all = TRUE]
.
A list or single element containing the
children of the XML node given by obj
and identified by ….
# NOT RUN {
f = system.file("exampleData", "gnumeric.xml", package = "XML")
top = xmlRoot(xmlTreeParse(f))
# Get the first RowInfo element.
top[["Sheets"]][[1]][["Rows"]][["RowInfo"]]
# Get a list containing only the first row element
top[["Sheets"]][[1]][["Rows"]]["RowInfo"]
top[["Sheets"]][[1]][["Rows"]][1]
# Get all of the RowInfo elements by position
top[["Sheets"]][[1]][["Rows"]][1:xmlSize(top[["Sheets"]][[1]][["Rows"]])]
# But more succinctly and accurately, get all of the RowInfo elements
top[["Sheets"]][[1]][["Rows"]]["RowInfo", all = TRUE]
# }
Run the code above in your browser using DataLab