xmlTree | R Documentation |
This is a mutable object (implemented via a closure)
for representing an XML tree, in the same
spirit as xmlOutputBuffer
and xmlOutputDOM
but that uses the internal structures of
libxml.
This can be used to create a DOM that can be
constructed in R and exported to another system
such as XSLT (https://www.omegahat.net/Sxslt/)
xmlTree(tag, attrs = NULL, dtd=NULL, namespaces=list(),
doc = newXMLDoc(dtd, namespaces))
tag |
the node or element name to use to create the new top-level node in the tree
or alternatively, an |
attrs |
attributes for the top-level node, in the form of a named character vector. |
dtd |
the name of the external DTD for this document.
If specified, this adds the DOCTYPE node to the resulting document.
This can be a node created earlier with a call to
|
namespaces |
a named character vector with each element giving the name space identifier and the
corresponding URI, \
e.g |
doc |
an internal XML document object, typically created with
|
This creates a collection of functions that manipulate a shared state to build and maintain an XML tree in C-level code.
An object of class
XMLInternalDOM
that extends XMLOutputStream
and has the same interface (i.e. “methods”) as
xmlOutputBuffer
and xmlOutputDOM
.
Each object has methods for
adding a new XML tag,
closing a tag, adding an XML comment,
and retrieving the contents of the tree.
addTag |
create a new tag at the current position, optionally leaving it as the active open tag to which new nodes will be added as children |
closeTag |
close the currently active tag making its parent the active element into which new nodes will be added. |
addComment |
add an XML comment node as a child of the active node in the document. |
value |
retrieve an object representing the
XML tree. See |
add |
degenerate method in this context. |
This is an early version of this function and I need to iron out some of the minor details.
Duncan Temple Lang
https://www.w3.org/XML/, http://www.xmlsoft.org, https://www.omegahat.net
saveXML
newXMLDoc
newXMLNode
xmlOutputBuffer
xmlOutputDOM
z = xmlTree("people", namespaces = list(r = "http://www.r-project.org"))
z$setNamespace("r")
z$addNode("person", attrs = c(id = "123"), close = FALSE)
z$addNode("firstname", "Duncan")
z$addNode("surname", "Temple Lang")
z$addNode("title", "Associate Professor")
z$addNode("expertize", close = FALSE)
z$addNode("topic", "Data Technologies")
z$addNode("topic", "Programming Language Design")
z$addNode("topic", "Parallel Computing")
z$addNode("topic", "Data Visualization")
z$addNode("topic", "Meta-Computing")
z$addNode("topic", "Inter-system interfaces")
z$closeTag()
z$addNode("address", "4210 Mathematical Sciences Building, UC Davis")
z$closeTag()
tr <- xmlTree("CDataTest")
tr$addTag("top", close=FALSE)
tr$addCData("x <- list(1, a='&');\nx[[2]]")
tr$addPI("S", "plot(1:10)")
tr$closeTag()
cat(saveXML(tr$value()))
f = tempfile()
saveXML(tr, f, encoding = "UTF-8")
# Creating a node
x = rnorm(3)
z = xmlTree("r:data", namespaces = c(r = "http://www.r-project.org"))
z$addNode("numeric", attrs = c("r:length" = length(x)))
# shows namespace prefix on an attribute, and different from the one on the node.
z = xmlTree()
z$addNode("r:data", namespace = c(r = "http://www.r-project.org",
omg = "https://www.omegahat.net"),
close = FALSE)
x = rnorm(3)
z$addNode("r:numeric", attrs = c("omg:length" = length(x)))
z = xmlTree("examples")
z$addNode("example", namespace = list(r = "http://www.r-project.org"), close = FALSE)
z$addNode("code", "mean(rnorm(100))", namespace = "r")
x = summary(rnorm(1000))
d = xmlTree()
d$addNode("table", close = FALSE)
d$addNode("tr", .children = sapply(names(x), function(x) d$addNode("th", x)))
d$addNode("tr", .children = sapply(x, function(x) d$addNode("td", format(x))))
d$closeNode()
cat(saveXML(d))
# Dealing with DTDs and system and public identifiers for DTDs.
# Just doctype
za = xmlTree("people", dtd = "people")
### www.omegahat.net is flaky
# no public element
zb = xmlTree("people",
dtd = c("people", "", "https://www.omegahat.net/XML/types.dtd"))
# public and system
zc = xmlTree("people",
dtd = c("people", "//a//b//c//d",
"https://www.omegahat.net/XML/types.dtd"))
Add the following code to your website.
For more information on customizing the embed code, read Embedding Snippets.