[Delphi] Доработка библиотеки HTMLp (библиотека для парсинга)
Необходима доработка библиотеки HTMLp (форк) для парсинга HTML.
Задача:
Добавить обработку тегов script, code, template и других подобных.
Необходимость выполнения:
В текущий момент если парсить страницу в которой присутствует например тег script в котором имеется html содержимое с другими тегами (в переменной или еще где + часто не закрытыми или экранированными) - возникают утечки.
Что при массовой работе приводит к крашам и другим ошибкам.
Суть задачи:
Для указанных тегов исключить парсинг содержимого (других тегов в них).
Но сам тег и его содержимое должно оставаться для дальнейшего получения (то-есть сохранить как один тег со всем содержимым).
Кот в итоге уйдёт в репозиторий.
Для исполнителей:
Пишите о том ознакомились ли, стоимость и мысли по решению данной проблемы.
Авто-ответы игнорируются, за подробностями если нет конкретных мыслей - не пишу.
Заранее спасибо.
-
фрилансер більше не працює на сервісі
-
фрилансер більше не працює на сервісі
-
фрилансер більше не працює на сервісі
-
Яка знайома проблема, аж скупа чоловіча сльоза на ясні очі навернулась.
Значить, рішень у вас рівно два:
- визначаєте тег, вміст якого вважаєте "шлаком", і ніяк не парсите, просто шукаєте закриваючий тег вліво.
- парсите ВСЕ до перемоги.
В обох випадках маєте "прелесті" із спотиканнями парсера ранійше ніж потрібно (перший випадок) і шлак на вихлопі, або пізнійше ніж потрібно (другий випадок, за умови порушення консистентності тегів) із забитим стеком, витоками пам'яті, незакритими розгалуженнями при додавання чайлдів і т.д. і т.п.
Як вихід бачу попередню валідацію консистенстності за стратегією "парсим ВСЕ" (включаючи script та ін, вважаючи їх так само деревовидними), і у випадку спотикання ігнорим ВСЕ, тикаючи вказівник де відбулась неконсистентність.
Якщо незрозуміло висловився - питайте в ПП.