Ты хочешь сказать что задача парсить невалидный html не сложная? Ну понятно что в любом конкретном случае разобрать страницу не сложно, но написать полноценный парсер на все случаи жизни, я думаю, не такая уж простая задача.
Подожди, я что-то не могу понять мы про одно и тоже говорим? Ты спрашиваешь как на SF разбирать невалидный|битый|malformed HTML? Т.е. иметь такой парсер который возьмет на вход неправильный HTML, переварит его и позволит перемещаться используя какой-нибудь язык запросов? И ты говоришь что это не сложно? Я не думаю, что в браузерах (чья это основная работа - разбирать html) и в таких проектах как HTML TIDY а также парсерах с многолетней историей на этот вопрос отводится пара строчек кода. Да, я думаю что эта задача МЕГА сложная и поэтому на SF до сих пор нет таких парсеров.
А что от этого парсера требуется? Старых добрых регулярных выражений не хватит?
С ZIP архивами, думаю, всё проще - чуть где отступили от протокола - знай себе вываливай ошибку file corrupted или ещё чего, а тут надо умудриться невалидный HTML распарсить.
А верстка то еще и кривой бывает, так что нет.
Ну а тут, если прям уж кровь из носа нельзя последовать принципу "garbage in - garbage out", лично я бы сделал финт ушами - нормировал невалидный HTML, т.е. сделал его валидным (вероятно в реализованных парсерах так и поступают), а уже валидный HTML скормил бы XML-парсеру, как и предлагал Дмитрий.
Имелось в виду нормировать его до такой степени, чтобы XML-парсер мог нормально работать.
А это будет самая сложная задача
Возможно, хотя есть идеи, которые кажутся достаточно просто реализуемыми.
Ну indexOf это уже для самых тривиальных задач.
Видимо, ты просто не умеешь им пользоваться)
- Вы не любите кошек?! Да вы не умеете их готовить... Всякий инструмент под свою задачу - где-то indexOf лучше подойдёт, где-то без regexp'ов не обойтись.
Это уж слишком абстрактное описание :
А что абстрактного в абстракции над html страничкой?
К примеру парсеры разные бывают - SAX, DOM. Я оберну HTML в класс со стринговым полем, добавлю ему возможность искать по регулярным выражениям и это уже будет абстракция более высокого чем String порядка, но вряд ли это будет именно то что требуется.