Знакомство с тегами

  • 20
  • Недоступна
Считайте с консоли имя файла, который имеет HTML-формат. Пример: Info about Leela <span xml:lang="en" lang="en"><b><span>Turanga Leela </span></b></span><span>Super</span><span>girl</span> Первым параметром в метод main приходит тег. Например, "span". Вывести на консоль все теги, которые соответству
Вы не можете решать эту задачу, т.к. не залогинены.
Комментарии (640)
  • популярные
  • новые
  • старые
Для того, чтобы оставить комментарий Вы должны авторизоваться
Сонмониус
Уровень 33, Харьков, Ukraine
18 июня, 21:54
Кто, как и я не понимает что должна выводить программа при вводных данных по типу О_О_З_О_З_О_З_З Она должна выводить вот это: О_О_З_О_З_О_З_З О_З О_З О_З Было три рабочих решения, но как оказалось, я решал не ту задачу. Условие если не сталкивался раньше с HTML, очень размытое. Я не сталкивался. В итоге для начала у меня в аргументах метода main было не "span", а < span >, так как думал, что тег, подразумевает скобки. Во вторых, задачу я понял, первый раз, как "вывести все что находится между открывающей и закрывающей скобкой". Так не приняло. Валидатор ругался на условие из начала поста. Тогда я подумал что если между открывающим и закрывающим тегом затесался непарный тег, то нужно вывести результат без него к примеру (_(_)_(_) преобразовать к (_(_)_) а лишний открывающий тег "(" перекинуть в следующую итерацию и вывести вместе со своим закрывающим тегом. Тоже не приняло, хотя эта задача сложней, чем то, что задумано в условии. Понятно стало только когда запустил правильное решение и посмотрел что оно делает, после чего допилил свой второй вариант, что б он то же самое делал, удалив из него много оказавшегося не нужным кода. Если обобщить, задача стоит - последовательно для каждого открывающего тега, вывести в консоль минимально возможный набор открывающих и закрывающих тегов, что б тех и других было равное количество. Пример: текст О_О_З_О_З_О_З_З Решение: О_О_З_О_З_О_З_З //для первого тега минимальные условия парности 4О + 4З О_З //напротив второго сразу стоит его пара О_З //напротив третьего тоже О_З //и напротив четвертого
Alex QA Manual Engineer
14 июня, 20:24
Решил как подсказали в комментариях (здесь же, фильтр "Популярные" комментарии) через Jsoup, в итоге ошибка компиляции на сервере ( пишет что возможно забыл добавить строку с импортом Jsoup, но она есть код прикреплю). В итоге скопировал себе решение от разработчиков JavaRush проверил, моё работает так же, сдал решение от разработчиков (первый раз такое, до этого ковырялся до последнего, но прочитал, здесь же в комментариях и на Stackoverflow что html не нужно парсить через Regex - ибо это не верно здесь . Мой код - без подсказок из комментов не вывез бы
package com.javarush.task.task19.task1918;

import org.jsoup.Jsoup;
import org.jsoup.nodes.Document;
import org.jsoup.nodes.Element;
import org.jsoup.parser.Parser;
import org.jsoup.select.Elements;

import java.io.*;

/*
Знакомство с тегами
*/

public class Solution {
    public static void main(String[] args) {
        try (BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
             BufferedReader fileBuffReader = new BufferedReader(new FileReader(br.readLine()))) {
            StringBuilder stringBuilder = new StringBuilder();
            String s;
            while ((s = fileBuffReader.readLine()) != null) {
                stringBuilder.append(s);
            }
            Document document = Jsoup.parse(stringBuilder.toString(),Parser.xmlParser());
            Elements elem = document.select(args[0]);
            for (Element element : elem){
                System.out.println(element);
            }

        } catch (IOException e) {
            e.printStackTrace();
        }
    }
}
Anonymous #2996742
Уровень 30, Санкт-Петербург, Russian Federation
19 июня, 16:59
Видимо в стоке "Document document = Jsoup.parse(stringBuilder.toString(),Parser.xmlParser" надо прописывать доп. параметр: "" . "Document document = Jsoup.parse(stringBuilder.toString(), "", Parser.htmlParser()); " Правда задача все равно была не принята. Но я сильно не разбирался в Jsoup, скорее просто попробовать. В итоге получилось решить через TreeMap. Такой вариант тоже есть в "популярных комментариях". Единственное пришлось порядок вывода изменить (либо я не правильно понял автора).
Виктор
Уровень 26, Гомель, Belarus
1 июня, 20:24
Непонятно как должна интерпретироваться вот такая строка: "<tag text2>text1</tag>" Как <tagtext2>text1</tag> или как <tag text2>text1</tag>. Как вообще следует рассматривать когда вместо пробела переход на новую строку?
01000101
Уровень 33, Минск, Belarus
4 июня, 09:01
Как "tag text2".
01000101
Уровень 33, Минск, Belarus
31 мая, 15:12
Валидатор – настоящее зло! "Программа должна выводить в консоль все теги, которые соответствуют тегу, заданному в параметре метода main" – это, по-вашему, подробное пояснение? Я решаю в IDEA, задача успешно протестирована для файлов с разным содержанием (1 из них в условии и ещё 1 тут в комментах, где 3 одноуровневых span внутри 1 внешнего span). Но решение не засчитывается.
Виктор
Уровень 26, Гомель, Belarus
3 июня, 21:20
у меня тоже не проходит. почему - непонятно.
Сергей
Уровень 30, Ростов-на-Дону
25 июня, 18:09
В моем случае данная ошибка была вызвана использованием HashMap для сохранения номеров начала и конца подстрок. Т.е. из-за отсутствия строгого порядка в HashMap порядок строк в выводе нарушался. Это как минимум еще одна проблема , которую валидатор отмечает данной ошибкой: "Программа должна выводить в консоль все теги, которые соответствуют тегу, заданному в параметре метода main" .
Pavel_Gomel Работает в ОАО"ГЗЛиН"
30 мая, 07:57
тяжело заходит условие без jsoup мозг закипит 1.сделать баф.читалку из консоли 2.сделать баф читалку из файла 3. прочитать файл в строку 4.распарсить строку в тип Document 5.выбрать теги args[0] из Document в Elements 6.Вывести Elements в консоль
Igor
Уровень 20, Киев, Ukraine
27 мая, 20:10
Потратил полдня только на понимание условия задачи. Постараюсь кратко, объяснить для таких как я, что от вас хотят. В условии задачи требуют вывести в правильном порядке все парные теги, которые содержат заданный параметр. Парные — данные теги имеют открывающийся и закрывающийся тег. Закрывающийся тег содержит знак наклонной черты. Между данными тегами вписывается содержимое тега. Содержимым тега может быть как обычный текст, так и другие, вложенные теги. Примеры парных тегов: <spаn></spаn> Важно! В открывающемся теге между параметром и скобкой “>” может быть ещё куча текста и символов <spаn xml:lang="en" lang="en">. Другие вариации, если они существуют, в этой задаче не рассматриваются. То есть, если первым параметром в main приходит тег – span, то нужно вывести в правильном порядке все парные теги, а именно данные символы и всё что между ними: <spаn ....... </spаn> Принцип размещения открывающего и закрывающего тегов соответствует правилу открытой и закрытой скобок. Вариантов может быть сколько угодно, так что советую сначала разобраться с этим алгоритмом, а потом уже приступать к парсингу строки: ( ( () ) ), ( ()() ), ( () )(), ()( () ), ()()().
Николай Лехманов
Уровень 51, Санкт-Петербург, Russian Federation
25 мая, 06:36
Подскажите кто знает, почему в правильном решении от JR В строке: closedTagsIndexes.add(closedTagIndex + tag.length() + 3); к tag.length() прибавляют 3?
Виктор
Уровень 26, Гомель, Belarus
4 июня, 15:44
Я не смотрел весь код, потому что еще не прошел задачу (хотя два варианта решения уже написал), но судя по коду потому что они вычисляют индекс закрывающего тега складывая, судя по всему, индекс первого вхождения + его длина (tag.length()) + 3 спецсимвола (</>). Иначе это можно было бы записать так: closedTagIndex + ("</" + tag + ">").length()
Сергей
Уровень 20, Москва
16 мая, 20:25
Да я красавчик! с 35 раза понял задание..🤪
Олег
Уровень 32, Москва, Russian Federation
26 мая, 12:13
о, объясни пжл)
Oleg Fadeev
Уровень 21, Санкт-Петербург, Russian Federation
12 мая, 21:02
Какой результат должен быть выведен при входных данных указанных в скриншоте ? сккриншот это черная пооска в сообщении 🤪
01000101
Уровень 33, Минск, Belarus
31 мая, 14:59
<sp an aria-hidden="true" class="line-numbers-rows"><sp an></sp an><sp an></sp an><sp an></sp an></sp an> <sp an></sp an> <sp an></sp an> <sp an></sp an> Без пробелов внутри тегов span.
Victoria Neshcheret
Уровень 32, Москва, Russian Federation
6 мая, 09:19
Решила с помощью регулярных выражений, когда добралась до них в обучении 😀 С помощью этой задачи, как раз их попрактиковала, получила возможность разобраться как их правильно писать.