Проверила, программа выводит все теги, включая внутренние, но валидатор все равно не принимает. В чем может быть проблема?
package com.javarush.task.task19.task1918;
/*
Знакомство с тегами
Считайте с консоли имя файла, который имеет 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".
Вывести на консоль все теги, которые соответствуют заданному тегу.
Каждый тег на новой строке, порядок должен соответствовать порядку следования в файле.
Количество пробелов, n, r не влияют на результат.
Файл не содержит тег CDATA, для всех открывающих тегов имеется отдельный закрывающий тег, одиночных тегов нет.
Тег может содержать вложенные теги.
*/
import java.io.BufferedReader;
import java.io.FileReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.ArrayList;
import java.util.Arrays;
public class Solution {
public static void main(String[] args) throws IOException {
BufferedReader reader = new BufferedReader( new InputStreamReader( System.in ) );
String filename = reader.readLine();
reader.close();
String s = args[0];
String begin = "<"+s;
String end = "/" + s + ">";
String allfile = "";
BufferedReader filereader = new BufferedReader( new FileReader( filename ) );
while (filereader.ready()) {
allfile = allfile + filereader.readLine();
}
filereader.close();
allfile = allfile.substring( allfile.indexOf( begin ), allfile.length() ); //<span xml:lang="en" lang="en"><b><span>Turanga Leela</span></b></span><span>Super</span><span>girl</span>
String [] data = allfile.split( begin );
ArrayList<String> list = new ArrayList<>( );
for (String d : data) {
list.add( begin + d );
}
list.remove( 0 );
String result = "";
String tmp = "";
for (int i = 0; i < list.size(); i++) {
result = result + list.get( i );
if (result.contains( end )) {
System.out.println(result);
tmp = result.substring( 5 , result.lastIndexOf( end ));
while (tmp.contains( begin )) {
tmp = tmp.substring( tmp.indexOf( begin ), tmp.lastIndexOf( end ) );
System.out.println(tmp + end );
tmp = tmp.substring( 5 );
}
result = "";
}
else {
continue;
}
}
}
}