Я бы сказал да обоим. Библиотека XML :: Simple создаст целое дерево в памяти, и оно будет кратно размеру файла. Для многих приложений, если ваш XML превышает 100 МБ или около того, практически невозможно полностью загрузить в память Perl. Анализатор SAX - это способ получения «событий» или уведомлений, когда файл читается, а теги открываются или закрываются.
В зависимости от ваших шаблонов использования парсер на основе SAX или DOM может работать быстрее: например, если вы пытаетесь обрабатывать всего несколько узлов или каждый узел в большом файле, режим SAX, вероятно, лучше всего подойдет. , Например, чтение большого RSS-канала и попытка разобрать каждый элемент в нем.
С другой стороны, если вам нужно сопоставить одну часть файла с другой частью, анализатор DOM или доступ через XPath будет иметь больше смысла - писать его «наизнанку», как синтаксический анализатор SAX. требуется будет неуклюжим и хитрым.
Я рекомендую попробовать SAX-парсер хотя бы один раз, потому что для этого требуется управляемое событиями мышление.
У меня был хороший успех с XML :: SAX :: Machines, чтобы настроить синтаксический анализ SAX в perl - если вам нужно несколько фильтров и конвейеров, это легко установить. Для более простых установок (т. Е. 99% времени) вам просто нужен один фильтр саксофона (посмотрите на XML :: Filter :: Base) и скажите XML :: SAX :: Machines, что нужно просто проанализировать файл (или прочитать из дескриптора файла), используя ваш фильтр. Вот полная статья.