Если вам надо обрабатывать довольно большие xml файлы. И делать надо это часто. То тогда не используйте REXML. Используйте ruby-libxml.
Он намного быстрее и, как мне кажется более лаконичен. У меня была задача на основе одного большого XML файла нагенерить кучу html файлов с кросслинками. Так вот REXML работал так медленно, что генерил 166 файлов около 25 минут, а ruby-libxml справляется с этой задачей теперь за секунд так 5.
Вот пару статей, которые позволят быстро перейти на libxml с REXML
- Converting from Rexml to libxml. Даже не знаю, что можно добавить. Из заголовка всё и так ясно.
- Parsing XML with Ruby. Приведены примеры использования трёх либ для парсинга xml на Ruby. Можно визульально сравнить, какая из либ проще.
Кстати, весь переход я осуществил где то за минут так 30. А это где то 1.5 полная генерация из моего большого xml. Зато теперь я могу моментально все перегенеривать.
Октябрь 25, 2011 в 7:45 дп |
наверняка для больших файлов можно было предусмотреть проблему прямо в документации REXML:
REXML avoids The DOM API, which violates the maxim of simplicity. It does provide a DOM model, but one that is Ruby-ized. It is an XML API oriented for Ruby programmers, not for XML programmers coming from Java.
Октябрь 25, 2011 в 11:54 дп |
А ты почитай что дальше написано. Эта фраза говорит о том, что надо его использовать в руби стиле.
Так вот я как раз и использовал в руби стиле….. рубичнее или рубистее не придумаешь.
На самом деле REXML ну очень тормознутый. Перед тем, как его использовать я читал конечно же сравнения, но никогда не думал, что он окажется настолько медленный.