Gumbo HTML5 парсер от Google
Запись от Dmitriy_M размещена 07.10.2013 в 11:26
Показов 15570
Комментарии 4
|
Gumbo прасер HTML5 от Google написанный на Си, и не имеющий никаких зависимостей, кроме компилятора C99. Правда под MSVC компилировать следует в режиме C++. Страница проекта, сборка при помощи cmake. Пользоваться Gumbo, не просто, а очень просто(если конечно же есть опыт использования XML DOM парсеров). Список структур: Кликните здесь для просмотра всего текста
Список функций: Кликните здесь для просмотра всего текста
Парсинг и построение дерева производиться функцией gumbo_parse, если нужно с определенными опциями gumbo_parse_with_options. Освобождение ресурсов производиться функцией gumbo_destroy_output.
Основные поля GumboElement:
Для вытаскивания значения атрибута существует функция gumbo_get_attribute, которая возвращает атрибут по строке, или NULL если заданного атрибута там нет. Пример:
| |||||||||||||||||||||||||||||||||||
Размещено в Без категории
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Всего комментариев 4
Комментарии
-
Запись от Avazart размещена 31.10.2013 в 19:48
-
Это небольшая либа на чистом Си.
Список всех файлов для компиляцииКликните здесь для просмотра всего текста
attribute.c
char_ref.c
error.c
parser.c
string_buffer.c
string_piece.c
tag.c
tokenizer.c
utf8.c
util.c
vector.c
Его легко вкомилить в приложение или написать конфиг для qmake.Запись от Dmitriy_M размещена 31.10.2013 в 20:49
-
Запись от Avazart размещена 02.11.2013 в 01:54
-
воды много утекло со времени последнего комента. но все же...
при использовании данного инструмента столкнулся с утечками памяти, небольшие но все же не очень приятно, хотя лечится легко и без вмешательства в исходники:
определяем свои функции выделения и освобождения памяти, заносим адреса в struct GumboOptions и используем :
C++ 1 2 3 4 5 6 7
GumboOptions opt; opt.allocator = alloc_memory; // учет выделения, к примеру в вектор std::vector<void*> vc opt.deallocator = free_memory;// учет освобождения, удаляем void* из vc GumboOutput* output = gumbo_parse_with_options(&opt,contents.c_str(), contents.lenght()); do_something(output->root); gumbo_destroy_output(&opt, output); //освобождаем то что осталось
Запись от ssXXss размещена 25.04.2015 в 23:00


