Pull и Sax схожи в том, что оба они представляют собой низкоуровневые потоковые подходы, более быстрые и более эффективные по сравнению с DOM, но pull имеет несколько преимуществ по сравнению с SAX:
Pull легче реализоватьчем SAX, потому что вам не нужно поддерживать состояние вашего синтаксического анализатора (используя дополнительные переменные, чтобы узнать, в каком месте ваш анализатор в настоящий момент находится в дереве XML).Вложенные циклы в вашем коде синтаксического анализатора более или менее будут соответствовать иерархии XML вашего документа, поэтому я думаю, что код синтаксического анализатора Pull также более читабелен, чем код синтаксического анализатора SAX.блоки, которые вы не хотите анализировать, поэтому он также более эффективен, чем SAX, который всегда извлекает основную информацию обо всех узлах.Используя pull-анализатор, вы также можете в любой момент остановить анализ, если вы получили нужную информацию, что невозможно с SAX.
Также вы можете реализовать SAX-анализатор с использованием pull-анализатора.Противоположность невозможна.
По всем этим причинам я считаю, что парсер pull во всех ситуациях превосходит SAX, однако, как и SAX, его нетривиально реализовать должным образом, и вы должны быть осторожны.Если вам не нужны преимущества низкоуровневой скорости в pull и SAX, а ваш XML чистый, вы всегда можете использовать высокоуровневую библиотеку синтаксического анализа, такую как Simple , чтобы выполнить тяжелую работу за вас.