Чтобы определить, какой интерфейс подходит для вас, вам нужно понять особенности проектирования с каждым из этих интерфейсов, и вам нужно понимать, что ваше приложение должно делать с XML-документами, которые вы собираетесь обрабатывать. Рассмотрим эти вопросы, чтобы помочь вам найти правильный подход.
Будет ли ваше приложение написано на Java? JAXP работает с DOM, SAX и JDOM; если вы будете писать код на Java, вы должны использовать JAXP, чтобы изолировать ваш код от подробностей реализации различных парсеров.
Как ваше приложение будет разворачиваться? Если вы собираетесь разворачивать ваше приложение как аплет Java и хотите минимизировать объем выгружаемого кода, имейте в виду, что парсеры SAX меньше, чем парсеры DOM. Также помните, что использование JDOM требует очень маленького объема кода в дополнение к парсеру SAX или DOM.
После того, как вы разобрали XML-документ, нужно ли вам будет обращаться к данным много раз? Если вам нужно возвращаться к разобранной версии XML-файла, возможно, DOM является правильным вариантом. Когда генерируется событие SAX, то от вас (разработчика) зависит сохранение чего-либо, что может понадобиться позже. Если вам нужно обратиться к событию, которое вы не сохранили, вам придется разобрать файл заново. DOM сохраняет все данные автоматически.
Не нужно ли вам всего несколько вещей из источника XML? Если вам нужно всего несколько вещей из источника XML, возможно, SAX является правильным вариантом. SAX не создает объектов для всего в исходном документе, вы можете сами решить, что является важным. При помощи SAX, вы можете просматривать каждое событие и определять, относится ли оно к тому, что вам нужно, и соответствующим образом его обрабатывать. Даже лучше, если вы нашли то, что искали, ваш код может сгенерировать исключение, чтобы остановить и парсер SAX.
Работаете ли вы на машине с очень маленькой памятью? Если так, SAX является наилучшим для вас вариантом, хотя вы можете рассмотреть и все другие факторы.
Разумеется, API XML существуют и для других языков, в частности, сообщества Perl и Python имеют очень хороший инструментарий XML.