Switch to English?
Yes
Переключитись на українську?
Так
Переключиться на русскую?
Да
Przełączyć się na polską?
Tak
Розмістіть свій проєкт безплатно та почніть отримувати пропозиції від фрилансерів-виконавців уже через хвилини після публікації!

[Delphi] Доработка библиотеки HTMLp (библиотека для парсинга)


  1.  фрилансер більше не працює на сервісі
  2.  фрилансер більше не працює на сервісі
  1.  фрилансер більше не працює на сервісі
  • Профіль видалено
    29 січня 2020, 1:59 |

    Яка знайома проблема, аж скупа чоловіча сльоза на ясні очі навернулась.

    Значить, рішень у вас рівно два: 

    - визначаєте тег, вміст якого вважаєте "шлаком", і ніяк не парсите, просто шукаєте закриваючий тег вліво.

    - парсите ВСЕ до перемоги.

    В обох випадках маєте "прелесті" із спотиканнями парсера ранійше ніж потрібно (перший випадок) і шлак на вихлопі, або пізнійше ніж потрібно (другий випадок, за умови порушення консистентності тегів) із забитим стеком, витоками пам'яті, незакритими розгалуженнями при додавання чайлдів і т.д. і т.п.


    Як вихід бачу попередню валідацію консистенстності за стратегією "парсим ВСЕ" (включаючи script та ін, вважаючи їх так само деревовидними), і у випадку спотикання ігнорим ВСЕ, тикаючи вказівник де відбулась неконсистентність.


    Якщо незрозуміло висловився - питайте в ПП.

  • Владимир Б.
    29 січня 2020, 21:43 |

    Добрый вечер.

    Это мысли относительно внесения изменений именно в данную библиотеку, или о решении проблемы в общем?

  • Профіль видалено
    30 січня 2020, 4:25 |

    І те і друге одночасно. Справа в тому, що якщо ви збираєтесь ігнорувать вміст якоїсь ноди, ви всеодно мусите її розпарсить, інакше не отримаєте що саме ігнорувати. Якщо парсер розбирає текст нормально, проблем немає (хіба затрати часу), якщо текст нормально НЕ розбирається, то його і НЕ слід розбирати на складові, бо інформація про структуру в ньому ВТРАЧЕНА. Дана реалізація не стійка, тому що сходу намагається розбирати на іерархію, і щось йде не так.

    Вихід: розбить на два етапи - розібрать структуру, і тільки потім, якщо не було проблем, розбирать на токени.


Замовник
Владимир Б.
Україна Україна  3  0
Проєкт опублікований
3 роки тому
80 переглядів
Мітки
  • delphi
  • Delphi/Pascal
  • pascal
  • opensource