LINUX.ORG.RU

На битоне православный XML парсер пишется за 15 минут, поэтому не принято советовать чужой, каждый пишет свой, под свою задачу. Используя возможности языка, можно написать наиболее производительное и экономичное решение для своего случая.

anonymous
()

Я для своих целей юзал elementtree, хотя давненько это было. Правда деревья в питоне обходить не очень удобно, но питоновские хэш-таблицы и функции - объекты первого класса рулят.

Осуществляем самый обычный обход дерева, на каждом шаге строится путь от кроня типа path="/root/tagA/tagB". На каждом шаге выполняется handlers[path](data),где handlers - хэш-таблица с функциями которые осуществляют преобразование куска дерева в кусок целевой объектной модели; data - необходимые данные.

Настройку хэндлеров лучше делать с помощью замыканий. Каждый хэндлер определяет, будет ли он парсить "вглубь" дерева и вызывает функцию обхода (которая строит путь и вызывает нужные обработчики из хеш-таблицы).

В принципе, базовых обработчиков всего лишь несколько и их нужно грамотно "замкнуть" для получения желаемого результата.

Того же эффекта можно добиться и при помощи SAX парсера, но это гиморней и есть несколько проблем с получением тексотвых узлов. Хотя зависит от предметной области.

Не очень эстетично, зато удобно.

Macil ★★★★★
()

Всем спасибо, буду смотреть :)

router ★★★★★
() автор топика
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.