An XML DOM-style parser, that only parses a subset of XML, but is designed to be fast. In particular:
- Entities, e.g.
&, are not expanded.
- Not all the validity conditions are checked.
- No support for
The name “hexml” is a combination of “Hex” (a curse) and “XML”. The “X” should not be capitalised because the parser is more curse and less XML.
Hexml may be suitable if you want to quickly parse XML, from known sources, and a full XML parser has been shown to be a bottleneck. As an alternative to hexml, which supports things like entities but is still pretty fast, see Pugixml (with a Haskell binding).
Hexml is tested with AFL.
If you want lenses for Hexml, see hexml-lens.
#13, allow the . character in tags and attributes
#10, mark the small fast FFI calls as "unsafe" (up to 10x faster)
#9, don't walk off the end of the character table
#8, Mac compatibility
Fix a bug when parsing closing comments
#7, prefix all the C functions with hexml_
#6, remove buffer overruns
#5, add lower bounds