[Haskell-cafe] Programming style and XML processing in Haskell
MR K P SCHUPKE
k.schupke at imperial.ac.uk
Thu May 13 18:45:25 EDT 2004
Just sticking in my two pence worth...
I am not sure what application you intend this for, but I find most XML
parsers completely useless. With my application programmers hat on, I do
not want to validate against a DTD, I want to extract as much information
as possible from bad XML... what I would like is a correcting parser - one
which outputs XML in compliance, but will accept any old rubbish and make
a best guess attempt to fix it up (based on a set of configurable
Secondly I deal with very large documents, the tree form of which won't fit
in memory, so I would see an XML parser doin the following...
parser :: String -> [XmlElements]
filter :: [XmlElements] -> [XmlElements]
reader :: [XmlElements] -> ... output data types ...
writer :: ... input data types ... -> [XmlElements]
render :: [XmlElements] -> String
In order to keep track of the tree structure the tree-depth of each element
is encoded within the XmlElement type... thus allowing the data to be streamed
through the filters/readers etc. This means the parser can output the first element as
soon as it encounters the second element (lazy list == stream in Haskell)
rather than having to wait until the last element as would happen with a DOM tree
(it is a tree not a graph as XML elements can only contain sub-elements)...
As I said the above is just my opinion, and as it happens I have written a
parser that does the above... I guess that is why there are several
parsers for XML available (different requirements) and there will probably
be many more ...
More information about the Haskell-Cafe