Как проверить HTML из Java?
Что такое быстрый и простой способ проверки HTML из Java? Я ищу класс с открытым исходным кодом /PD (или набор классов), который описывает различные свойства 100 с лишним тегов HTML, таких как:
- Является ли тег необязательным? Пустой? Законно ли опускать закрывающий тег?
- Какие еще теги может содержать этот тег (если есть)?
- Какие атрибуты допустимы для этого тега, и каковы их типы? (не обязательно, но приятно иметь)
Спасибо!
РЕДАКТИРОВАТЬ
Я собираюсь сделать анализ тегов за тегами HTML-документа, поэтому меня меньше интересует, является ли документ в целом действительным, а скорее, каковы конкретные требования для каждого типа тегов. Я мог бы закодировать правила на основе спецификации W3C, но хотел посмотреть, какие готовые решения доступны в первую очередь.
2 ответа
Если вы хотите убедиться, что определенные теги соответствуют определенным спецификациям, похоже, нет конца анализаторам HTML на основе Java:
HTML-парсеры с открытым исходным кодом в Java
Другими словами, вы можете проанализировать ваш HTML, а затем проверить полученный документ на наличие тегов, которые вы искали, и определить, соответствуют ли они требуемым спецификациям. Если они этого не делают, вы можете просто выдать ошибку.
Я не думаю, что вы найдете инструмент анализа HTML, который был написан с учетом ваших требований, в основном потому, что эти требования не были озвучены и, вероятно, немного туманны.
Если парсер не делает из коробки того, что вы хотите, по крайней мере, этот список с открытым исходным кодом, так что вы можете взломать парсер, если вы публикуете свои изменения.
Проверьте, что JTidy ( http://jtidy.sourceforge.net/) и HTMLParser VietSpider ( http://sourceforge.net/projects/binhgiang/) - это анализатор Java HTML и некоторые возможности проверки синтаксиса. Некоторые плагины HTML-редактора на основе затмений используют JTidy (или порт Tidy) для проверки синтаксиса. Или как Дэвид Саид, отправьте страницу на w3c.org
Самый простой способ: отправить веб-страницу на w3c.org и проанализировать результат.