xmlSerializeHook {XML} | R Documentation

## 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.

### Author(s)

Duncan Temple Lang

### References

The R Internals Manual.

### See Also

`saveRDS` and `readRDS`

### Examples

    z = newXMLNode("foo")
    f = system.file("exampleData", "tides.xml", package = "XML")
    doc = xmlParse(f)
    hdoc = as(doc, "XMLHashTree")

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

    saveRDS(list(a = 1:10, z = z, doc = doc, hdoc = hdoc, nodes = nodes), "tmp.rda",
              refhook = xmlSerializeHook)

    v = readRDS("tmp.rda", refhook = xmlDeserializeHook)

[Package XML version 3.98-1.5 Index]