Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > C/C++: Общие вопросы > разбор html


Автор: gagar 18.5.2010, 09:15
Всем доброго времени суток!

Возник интересный вопрос: нужно написать модуль разбора произвольного html кода c возможностью строить DOM-дерево документа, использовать XPath и выполнять различные манипуляции с документом (например, добавление новых атрибутов к тегам).

К модулю предъявляется ряд требований:

1. размер дистрибутива не важен;
2. критична скорость обработки (я понимаю, что это все зависит от размеров и сложности html документов и производительности компа, но хотелось бы выбрать из всего набора библиотек самую производительную);
3. удобство (здесь имеется ввиду понятность API библиотеки и полнота документации);
4. перспективность (библиотека должна развиваться, что бы в будущем можно было поддерживать и html5);
5. платформа, по умолчанию, Windows, но если будет портируемый вариант, то это еще один жирный плюс;

6. Очень желательно что бы библиотека могла так же работать с xml (но это только пожелание).


Что имеется: 

1. MSHTML - "классическая" библиотека в мире  Windows от компании Microsoft;
2. libxml2 - тоже "классика" в мире Linux (впрочем, библиотека кросплатформенная);

В чем, собственно, вопрос: какая из этих библиотек лучше? Есть ли иные альтернативы? Хотелось бы сделать правильный выбор...

P.S. Неужели огромный мир C++ (особенно его Linux часть) ограничивается только двумя библиотеками для работы с html? 

Автор: djamshud 18.5.2010, 10:40
В линуксе не принято городить велосипедов. libxml2 хорош. Можно воспользоваться плюсовым враппером libxmlpp или враппером для других языков. Ну и в Qt тоже есть парсеры XML.

Лучше брать libxml(pp), ибо кроссплатформенно.

Автор: gagar 18.5.2010, 11:37
А можно про враппер libxmlpp поподробнее? Где его скачать и где доки лежат?

И еще... у libxml есть в целом неплохая документация по работе с xml. Но совсем уборая по работе с html... Есть болле подробная инфа, чем с офф сайта? И где можно нарыть примеры работы с html с помощью libxml. Google ничего вразумительного не выдает...

Автор: gustavomarginale 4.9.2010, 21:26
HTML из реальной жизни не всегда является валидным XML-документом, так что иногда DOM-дерево разваливается на запчасти.
Мои исследования: http://dramele.livejournal.com/126144.html

Автор: jonie 5.9.2010, 12:39
libtidy

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)