XML (version 3.98-1.20)

xmlSerializeHook: Functions that help serialize and deserialize XML internal objects

Description

These functions can be used to control how the C-level data structures associated with XML documents, nodes, XPath queries, etc. are serialized to a a file or connection and deserialized back into an R session. Since these C-level data structures are represented in R as external pointers, they would normally be serialized and deserialized in a way that loses all the information about the contents of the memory being referenced. xmlSerializeHook arranges to serialize these pointers by saving the corresponding XML content as a string and also the class of the object. The deserialize function converts such objects back to their original form.

These functions are used in calls to saveRDS and readRDS via the refhook argument. saveRDS(obj, filename, refhook = xmlSerializeHook) readRDS(filename, refhook = xmlDeserializeHook)

Usage

xmlSerializeHook(x)
xmlDeserializeHook(x)

Arguments

x

the object to be deserialized, and the character vector to be deserialized.

Value

xmlSerializeHook returns a character version of the XML document or node, along with the basic class. If it is called with an object that is not an native/internal XML object, it returns NULL

xmlDeserializeHook returns the parsed XML object, either a document or a node.

References

The R Internals Manual.

See Also

saveRDS and readRDS

Examples

Run this code
# NOT RUN {
z = newXMLNode("foo")
f = system.file("exampleData", "tides.xml", package = "XML")
doc = xmlParse(f)
hdoc = as(doc, "XMLHashTree")

nodes = getNodeSet(doc, "//pred")

ff <- file.path(tempdir(), "tmp.rda")
saveRDS(list(a = 1:10, z = z, doc = doc, hdoc = hdoc, nodes = nodes), ff,
          refhook = xmlSerializeHook)

v = readRDS(ff, refhook = xmlDeserializeHook)
unlink(ff)
# }

Run the code above in your browser using DataCamp Workspace