substringBetween() возвращает ноль при попытке извлечь <html>..</ html>

Я строю небольшое Java-приложение для извлечения пяти страниц Википедии и поиска подстрок в исходном коде html. Я использую библиотеку org.apache.commons.lang3.StringUtils. Однако статья в Википедии может быть большой, и в StringUtils есть ограничение:

String html;

try {
    html = Jsoup.connect("http://en.wikipedia.org/wiki/Canada").get().html();
} catch(IOException e) {
    html = "";
}

String trimmedHtml = substringBetween(html, "<html>", "</html>");

System.out.println(html); // prints the whole source code fine
System.out.println(trimmedHtml); // prints null

Почему консоль печатает null за trimmedHtml? Выход должен быть (почти) таким же большим, как и для html, Существует ли максимальная длина для вывода строки или для параметров substringBetween()?

1 ответ

Решение

Строковые методы util работают и хорошо проверены - здесь нет "ограничений" или "ошибок".

Просмотр страницы источника показывает, что <html> не будет соответствовать:

<html lang="en" dir="ltr" class="client-nojs">

Отличный пример того, почему обработка строк HTML не очень хорошая идея в целом. Продолжайте использовать поддержку, предлагаемую Jsoup, которая может использовать метод html() после получения элемента .

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