JSoup возвращает недопустимый HTML

Я работаю с 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 есть проблема? Благодарность

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

Bill the Lizard 26.06.2018 18:48

@Alessandra, вы можете получить абсолютный href, используя String absHref = link.absUrl("href");

Abhilash 26.06.2018 23:11

@Alessandra, есть ли смысл самому строить абсолютный href?

Abhilash 26.06.2018 23:19

Спасибо за предложение по поводу absUrl, работает. Я заметил, что если есть какие-либо теги br, парсер записывает их без закрытия, а html-to-pdf закрывается с другими тегами.

Alessandra 27.06.2018 07:19

Я нашел решение, проблема в том, что мой движок html-to-pdf хочет xml и не любит <br>. Я добавил синтаксис doc.outputSettings (). (Org.jsoup.nodes.Document.OutputS‌ ettings.Syntax.xml); прежде чем вернуть документ, и он работает!

Alessandra 27.06.2018 07:34
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
В настоящее время производительность загрузки веб-сайта имеет решающее значение не только для удобства пользователей, но и для ранжирования в...
Введение в CSS
Введение в CSS
CSS является неотъемлемой частью трех основных составляющих front-end веб-разработки.
Как выровнять Div по центру?
Как выровнять Div по центру?
Чтобы выровнять элемент <div>по горизонтали и вертикали с помощью CSS, можно использовать комбинацию свойств и значений CSS. Вот несколько методов,...
Навигация по приложениям React: Исчерпывающее руководство по React Router
Навигация по приложениям React: Исчерпывающее руководство по React Router
React Router стала незаменимой библиотекой для создания одностраничных приложений с навигацией в React. В этой статье блога мы подробно рассмотрим...
Система управления парковками с использованием HTML, CSS и JavaScript
Система управления парковками с использованием HTML, CSS и JavaScript
Веб-сайт по управлению парковками был создан с использованием HTML, CSS и JavaScript. Это простой сайт, ничего вычурного. Основная цель -...
Toor - Ангулярный шаблон для бронирования путешествий
Toor - Ангулярный шаблон для бронирования путешествий
Toor - Travel Booking Angular Template один из лучших Travel & Tour booking template in the world. 30+ валидированных HTML5 страниц, которые помогут...
0
5
35
0

Другие вопросы по теме