[Haskell-cafe] Re: Lazy XML handling
MR K P SCHUPKE
k.schupke at imperial.ac.uk
Sat May 22 00:31:40 EDT 2004
>The standard representation should be a tree datatype
Why not separate the parser and tree builder, have the parser stream the
tags out, and define the tag stream as the interface to a DOM builder...
parse :: String -> [(XmlTreeDepth,XmlElement)]
buildDOM :: [(XmlTreeDepth,XmlElement)] -> DOM
Thats how I would do it anyway. I appreciate the comments about efficency, I
was really talking about simplicity. The algorithms on the steam can be
quite simple, and hence avoid bugs.
I would still want to dispense with the DOM, which if you think about
the system thus:
Parser -> [stream] -> DomBuilder -> DOM - operations on DOM
You can push the operations on the dom via a structural transformation
back through the DomBuilder, such that they operate directly on the
In other words the user composes the functions as if they are operating
on a real DOM... only the DOM is never constructed and the operations
are applied direct to the stream output of the parser.
More information about the Haskell-Cafe