Как разобрать html-файл без использования Jsoup?

Мне нужно разобрать HTML-файл для домашнего задания, и поэтому я не могу использовать Jsoup.

Я попытался просканировать файл, но не знаю, как сохранить то, что ищу.

Вот что у меня есть:

    FileInputStream fis = new FileInputStream(filename);
    InputStreamReader inStream = new InputStreamReader(fis);
    BufferedReader reader = new BufferedReader(inStream);

    String fileLine;
    while((fileLine = reader.readLine()) != null){

        String tag = fileLine.substring(fileLine.indexOf("<") + 1,fileLine.indexOf(">"))
    }

Мне нужно найти информацию внутри тегов title>, но я не могу понять, как получить эту информацию, не получая теги, которые мне не нужны, или как обрабатывать случаи, когда теги отсутствуют.

Я хочу взять информацию из тега title и превратить ее в строку, которую я могу использовать.

Как выглядит настоящий html-файл? И как он форматируется? Нужно ли читать построчно? Публикация фактического html-файла может помочь.

BlackPearl 08.04.2019 20:11
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
Как вычислять биты и понимать побитовые операторы в Java - объяснение с примерами
Как вычислять биты и понимать побитовые операторы в Java - объяснение с примерами
В компьютерном программировании биты играют важнейшую роль в представлении и манипулировании данными на двоичном уровне. Побитовые операции...
Поднятие тревоги для долго выполняющихся методов в Spring Boot
Поднятие тревоги для долго выполняющихся методов в Spring Boot
Приходилось ли вам сталкиваться с требованиями, в которых вас могли попросить поднять тревогу или выдать ошибку, когда метод Java занимает больше...
Полный курс Java для разработчиков веб-сайтов и приложений
Полный курс Java для разработчиков веб-сайтов и приложений
Получите сертификат Java Web и Application Developer, используя наш курс.
1
1
2 115
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий
String fileDataString = Files.readAllLines(Paths.get(fileName), Charset.forName("UTF-8")).stream().collect(Collectors.joining("\n"));

String title = StringUtils.substringBetween(fileDataString, "<title>", "</title>"));

Это должно работать, чтобы получить текст между <title> и </title>

Обновлено: Спасибо BlackPearl за предложение Stream<String>.collect(Collectors.joining("\n"));

Этот подход будет работать только в том случае, если открывающий и закрывающий теги заголовка находятся в одной строке.

BlackPearl 08.04.2019 20:19

Изменил его, чтобы он сначала читал весь файл. затем ищет теги заголовков и получает строку между ними

Mike de Groot 08.04.2019 20:25

или лучше stream().collect(Collectors.joining("\n"))

BlackPearl 08.04.2019 20:32

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