![Smile :)](./images/smilies/icon_smile.gif)
Java based HTML parser (DOM)?
-
- Уже с Приветом
- Posts: 1564
- Joined: 27 Nov 2001 10:01
- Location: Live free or die
Java based HTML parser (DOM)?
Какой есть хороший парсер? Нужно что бы строил DOM по HTML. JTidy не предлагать ![Smile :)](./images/smilies/icon_smile.gif)
![Smile :)](./images/smilies/icon_smile.gif)
Интересный вы человек! Все у вас в порядке. Удивительно, с таким счастьем - и на свободе. (C) О.Бендер
-
- Уже с Приветом
- Posts: 1224
- Joined: 24 Feb 2003 07:40
Html - произвольного формата? Допустимы ли незакрытые тэги типа <li> и <p>, допустимы ли ошибки и т.п.. Ну то есть какой уровень стандартизации нужен?
Спрашиваю не потому что что-то знаю, а просто интересно.
Может быть, при некотором дополнительном форматировании подойдет просто один из стандартных XML DOM-парсеров?...
Спрашиваю не потому что что-то знаю, а просто интересно.
![Smile :)](./images/smilies/icon_smile.gif)
Может быть, при некотором дополнительном форматировании подойдет просто один из стандартных XML DOM-парсеров?...
-
- Уже с Приветом
- Posts: 3982
- Joined: 13 Jul 2000 09:01
- Location: SVX -> BOS -> BUR -> SJC
-
- Уже с Приветом
- Posts: 1564
- Joined: 27 Nov 2001 10:01
- Location: Live free or die
Ну написать можно моного чего
только задача стоит совсем другая, а парсер в DOM нужен просто как тул для ее решения, т.е., время на то что бы писать парсер нету.
К вопросу о незакрытых тэгах, JTidy делает tag balancing но этот проект уже 3 года как не поддерживается (не обновляется) так что его стремно трогать.
![Smile :)](./images/smilies/icon_smile.gif)
К вопросу о незакрытых тэгах, JTidy делает tag balancing но этот проект уже 3 года как не поддерживается (не обновляется) так что его стремно трогать.
Интересный вы человек! Все у вас в порядке. Удивительно, с таким счастьем - и на свободе. (C) О.Бендер
-
- Уже с Приветом
- Posts: 932
- Joined: 18 Mar 2000 10:01
- Location: Seattle
-
- Уже с Приветом
- Posts: 569
- Joined: 14 Dec 2003 04:06
- Location: Львов->Киев->Торонто
WildVlad wrote:На сколько я помню, там можно свой САКСоподобный парсер написать (в инете везде пример для CSV в статейках описан), а потом уже им можно и ДОМ построить :)
Умм. С html проблемка получилась. Каждый браузер старался быть максимально толерантным к ошибкам безруких програмистов и по максимуму делал предположения о том например где же закакнчиватеся незакрытый тег и тому подобные ляпы. Но создавать стандарт на ошибки же никто не будет, поэтому браузеры несовместимы еще и в том как они обрабатывают неправильности.
Поэтому создание html парсера задача очень нетривиальная.
Xml стандарт адресовал эту проблему тем что он требует от парсера расценивать как критическую ошибку любое отсупление от стандарта. За счет этого пасеры становятся проще в реализации и более совместимы.
Никакой разрухи нет. (с) Проф. Преображенский.
-
- Уже с Приветом
- Posts: 3982
- Joined: 13 Jul 2000 09:01
- Location: SVX -> BOS -> BUR -> SJC
Strannik223 wrote:Умм. С html проблемка получилась. Каждый браузер старался быть максимально толерантным к ошибкам безруких програмистов и по максимуму делал предположения о том например где же закакнчиватеся незакрытый тег и тому подобные ляпы.
Я прекрасно понимаю, более того, вот это вполне валидный HTML (as is, no other elements on the page like <html> and <body>) :
Code: Select all
normal <b> bold <i> bolditalic </b> italic </i> normal
(Сорри, форум корёжит пример - сделайте копи-пасте в файл)
IE умеет разруливать эту ситуацию, но DOM-дерево по такому построить очень не просто...
Хотя - можно просто всегда считать, что, например, <hr> всегда имеет пустое тело, </table> закрывает все тэги, открытые внутри таблицы (не знаю, может ли <form> быть открыт посередине одной таблицы а закрыт в середине следующей) ну и так далее - то есть для каждого тэга иметь список тэгов, которые автоматически закрываются при закрытии данного тэга, если они были открыты внутри данного тэга, и тех, которые автоматически переоткрываются.
Короче говоря, с некоторыми допущениями (а особенно, если забить на приведённый пример с болдо-италиками) вполне возможно написать более-менее хороший парсер для html - займёт день минус два
![Mr. Green :mrgreen:](./images/smilies/icon_mrgreen.gif)
Добавлено: Кстати, а этот Сановский чудо Java-браузер не экспозит ли API? а то типа можно выдернуть готовый ДОМ из него
![Mr. Green :mrgreen:](./images/smilies/icon_mrgreen.gif)
I hated LA