Serializing/Persisting XdmValue

David Lee
2009-04-02
2012-10-08
  • David Lee
    David Lee
    2009-04-02

    Have you ever done any experiments (or thought experiments) with serializing or persisting XdmValue , XdmNode, or the ValueRepresentation or NodeInfo ?

    Consider this use case.
    Suppose I have a lot of XdmValue objects (probably nodes, documents but suppose any) which are long lived in the JVM. Suppose I'd like to "swap them out" to a file to clean up the memory space for a while, then swap them in later on demand. Maybe some might never be used later. Certianly I could write them out as Text (if they are documents or nodes, or wrap sequences/values in document nodes), and while there is risk of loss of information doing this I suspect if I were careful enough I could get it to work.

    But what about some sort of binary dump ? Suppose it was the internal TinyTree format and I didn't need the serialized form to be usable in another instance. That way I could avoid saving the NamePool. I would guess that this could be quite a lot more efficient in space and time then serializing and parsing later.

    I have read from previous posts that serializing compiled XSLT stylesheets is not much of a win vs text and parsing. But what about NodeInfo or Value ?

    Thanks for any thoughts or ideas.

    -David

     
    • Michael Kay
      Michael Kay
      2009-04-02

      The Saxon Ptree (persistent tree) format was designed expressly for this purpose. It's not very widely used, but I think there's a significant benefit over serializing as XML and reparsing, especially if you want to retain type information.

      Another use case is passing documents between processes running on different machines, for example a more efficient way of encoding the response to a web service request.

      Further information:

      http://www.saxonica.com/documentation/sourcedocs/ptree.html

      Michael Kay