Originally written by Larry Wall, using expat written by James Clark allow several styles of parsing such as Stream, Object, Tree.