Какую библиотеку использовать для создания HTML-документов? - PullRequest
3 голосов
/ 31 мая 2011

Может ли кто-нибудь порекомендовать библиотеки, которые могут выполнять действия, противоположные этим библиотекам?

HtmlCleaner, TagSoup, HtmlParser, HtmlUnit, jSoup, jTidy, nekoHtml, WebHarvest или Jericho.

Мне нужно создавать HTML-страницы, строить модель DOM из содержимого String.

РЕДАКТИРОВАТЬ: мне это нужно для целей тестирования.У меня есть различные типы ввода / строк, которые могут быть на html-странице в разных местах ... Поэтому мне нужно динамически создать ее ... Затем я обрабатываю html-страницу на основе различных критериев, которые должны быть выполнены или нет.

Я покажу вам, почему я задал этот вопрос, рассмотрите htmlCleaner для этой работы:

List<String> paragraphs = getParagraphs(entity.getFile());
List<TagNode> pNodes = new ArrayList<TagNode>();

TagNode html = cleaner.clean("<html/>");
for(String paragraph : paragraphs) {                
    TagNode p = new TagNode("p");
    pNodes.add(p);
    // CANNOT setText() ?
}
html.addChildren(pNodes);

Проблема в том, что TagNode имеет метод getText(), но не метод setText()....

Пожалуйста, добавьте больше комментариев о том, насколько размыт этот вопрос ... Лучшее, что вы можете сделать

Ответы [ 4 ]

8 голосов
/ 31 мая 2011

Jsoup, Jsoup, Jsoup!Я использовал все это, и это мой любимый в конечном итоге.Вы можете использовать его для создания документов, плюс он приносит много волшебства в стиле Jquery, наряду с лучшим анализом HTML-документов, который я когда-либо видел в библиотеке Java.Я так рад этому, что я не возражаю против того, чтобы бесстыдно продвигать это.;)

2 голосов
/ 01 июня 2011

Если вас особенно интересует HtmlCleaner, это действительно очень удобный выбор для создания HTML-документов.

Но вы должны знать, что если вы хотите установить контент для TagNode, вы добавляете дочерний элемент ContentNode: -)

List<String> paragraphs = getParagraphs(entity.getFile());
List<TagNode> pNodes = new ArrayList<TagNode>();

TagNode html = new TagNode("html");
for(String paragraph : paragraphs) {                
    TagNode p = new TagNode("p");
    p.addChild(new ContentNode(paragraph));
    pNodes.add(p);
}
html.addChildren(pNodes);
1 голос
/ 01 июня 2011

Существует множество библиотек шаблонов для Java, от JSP до FreeMarker, от конкретных реализаций в различных средах (Spring?) До универсальных библиотек, таких как StringTemplate.

Самая сложная задача - сделать ...choice.

В общем случае эти библиотеки предлагают сделать каркас веб-страницы с «дырами» для заполнения переменными.Это самый простой подход, часто хорошо работающий с инструментами.
Если вы действительно хотите собрать из Dom, вы можете просто использовать библиотеку XML и генерировать XHTML.

0 голосов
/ 22 февраля 2012

jwebutils - библиотека для создания разметки HTML 5 с использованием Java. Он также содержит поддержку для создания разметки JSON и CSS 3.

Джакарта Конструктор элементов (ECS) - Java API для генерации элементов для различных языков разметки, он напрямую поддерживает HTML 4.0 и XML. Сейчас на пенсии, но некоторым это действительно нравится.

...