The authors of the StAX specification targeted three types of developers:
Library and infrastructure developers: Need highly efficient, low-level APIs with minimal extensibility requirements.
J2ME developers: Need small, simple, pull-parsing libraries, and have minimal extensibility needs.
Java EE and Java SE developers: Need clean, efficient pull-parsing libraries, plus need the flexibility to both read and write XML streams, create new event types, and extend XML document elements and attributes.
Given these wide-ranging development categories, the StAX authors felt it was more useful to define two small, efficient APIs rather than overloading one larger and necessarily more complex API.