У меня есть куча файлов XML размером примерно 1-2 мегабайта. На самом деле, больше, чем куча, есть миллионы. Они все правильно сформированы, и многие даже проверены на соответствие их схеме (подтверждено с помощью libxml2).
Все они были созданы одним и тем же приложением, поэтому они имеют единый формат (хотя это может теоретически измениться в будущем).
Я хочу проверить значения одного элемента в каждом файле из скрипта Perl. Скорость важна (я хотел бы занять меньше секунды на файл), и, как уже было отмечено, я уже знаю, что файлы правильно сформированы.
Мне очень хочется просто «открыть» файлы в Perl и сканировать до тех пор, пока я не увижу искомый элемент, взять значение (которое находится рядом с началом файла) и закрыть файл.
С другой стороны, я мог бы использовать синтаксический анализатор XML (который мог бы защитить меня от будущих изменений в форматировании XML), но я подозреваю, что это будет медленнее, чем хотелось бы.
Кто-нибудь может порекомендовать подходящий подход и / или парсер?
Заранее спасибо.
Обновление
Вот структура / сложность данных, которые я пытаюсь извлечь:
<doc>
...
<someparentnode attrib="notme" attrib2="5">
<node>Not this one</node>
</someparentnode>
<someparentnode attrib="pickme" attrib2="5">
<node>This is the data I want</node>
</someparentnode>
<someparentnode attrib="notme"
attrib2="reallyreallylonglineslikethisonearewrapped">
<node>Not this one either and it may be
wrapped too.</node>
</someparentnode>
...
</doc>
Иерархия идет на несколько уровней глубже, но я думаю, что это покрывает то, что я пытаюсь сделать.