Я работаю с JSoup 1.11.3 от Maven. Я пытаюсь сделать абсолютных родственников href, мой код следующий:
public String updateHrefs (String htmlContent, String baseUrl, String currentUrl) {
org.jsoup.nodes.Document doc = Jsoup.parse(htmlContent);
Elements links = doc.getElementsByTag("a");
for (org.jsoup.nodes.Element link : links) {
String absHref = link.attr("href");
System.out.println("URL before " + absHref);
if (absHref.equals("")) {
absHref = baseUrl;
} else if ((absHref.length()>1) && absHref.substring(0, 2).equals("//")) {
absHref = absHref;
} else if (absHref.equals("http")) {
absHref = absHref;
} else if (absHref.substring(0, 1).equals("/")) {
absHref = baseUrl + absHref;
} else if (absHref.substring(0, 1).equals("#")) {
absHref = baseUrl + currentUrl + absHref;
} else {
absHref = baseUrl + "/" + absHref;
}
System.out.println("URL after " + absHref);
link.attr("href", absHref);
}
return doc.outerHtml();
}
В конце я передаю результат механизму преобразования html в pdf, и он возвращает ошибку,
<p>
тег не закрыт. Я попробовал движок html-to-pdf с исходным html, и он работает: возможно ли, что в JSoup есть проблема? Благодарность
@Alessandra, вы можете получить абсолютный href, используя String absHref = link.absUrl("href");
@Alessandra, есть ли смысл самому строить абсолютный href?
Спасибо за предложение по поводу absUrl, работает. Я заметил, что если есть какие-либо теги br, парсер записывает их без закрытия, а html-to-pdf закрывается с другими тегами.
Я нашел решение, проблема в том, что мой движок html-to-pdf хочет xml и не любит <br>. Я добавил синтаксис doc.outputSettings (). (Org.jsoup.nodes.Document.OutputS ettings.Syntax.xml); прежде чем вернуть документ, и он работает!






Вы можете поделиться HTML?