Потоковые XML-парсеры, такие как SAX и StAX, быстрее и эффективнее памяти, чем парсеры, строящие древовидную структуру, такую как DOM-парсеры. SAX - это синтаксический анализатор push, означающий, что это экземпляр шаблона наблюдателя (также называемого шаблоном слушателя). SAX был первым, но затем появился StAX - синтаксический анализатор, что означает, что он в основном работает как итератор.
Вы можете найти причины, по которым вы предпочитаете StAX поверх SAX повсюду, но обычно это сводится к: "проще в использовании".
В учебнике Java по JAXP StAX смутно представлен как середина между DOM и SAX: "это проще, чем SAX и более эффективно, чем DOM". Тем не менее, я не нашел никаких подсказок, что StAX будет медленнее или меньше памяти, чем SAX.
Все это заставило меня задуматься: есть ли причины выбирать SAX вместо StAX?