Why does Apache have multiple XML parsers?
As of June 2002, Apache has three Java parsers: Crimson, Xerces 1, and Xerces 2. The reason is historical — because Apache accepted two donations from two different companies. IBM donated XML4J which became Apache Xerces 1. Sun donated Project X which became Apache Crimson. Xerces 2 is a new third parser which is a rewrite. It has goals such as maintainability, modularity, and the implementation of certain features, which neither of the previous original parsers has achieved. Xerces 2 was designed to fill the long-term needs of Apache projects going forward.