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