Выводит по требованию
package com.javarush.task.task19.task1918;
import java.io.BufferedReader;
import java.io.FileReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.ArrayDeque;
import java.util.ArrayList;
import java.util.Queue;
import java.util.Stack;
import java.util.regex.Matcher;
import java.util.regex.Pattern;
import org.jsoup.Jsoup;
import org.jsoup.nodes.Document;
import org.jsoup.nodes.Element;
import org.jsoup.select.Elements;
/*
Знакомство с тегами
*/
public class Solution {
public static void main(String[] args) throws IOException {
BufferedReader reader = new BufferedReader(new InputStreamReader(System.in));
try (BufferedReader fileReader = new BufferedReader(new FileReader(reader.readLine()))) {
reader.close();
Queue<String> queue = new ArrayDeque<>();
Queue<String> queue2 = new ArrayDeque<>();
Stack<String> stack = new Stack<>();
String line;
String result = null;
int close = -1;
int open = -1;
while ((line = fileReader.readLine()) != null) {
for (int i = 0; i < line.length(); i++) {
if (line.charAt(i) == '<') {
if (open < 0) {
if ((i + 4) < line.length() && line.substring(i + 1, i + 5).equals(args[0])) {
open = i;
i = i + 5;
}
} else {
if ((i + 5) < line.length() && line.substring(i + 1, i + 6).equals("/" + args[0])) {
close = i + 7;
i = i + 7;
}
}
}
}
result = line.substring(open, close);
}
String res = result.replaceAll(" ", "");
String res2 = res.replaceAll("<", " <");
String[] a = res2.split(" ");
for (int i = 1; i < a.length; i++) {
if (a[i].charAt(1) != '/') {
stack.push(a[i]);
} else {
String str = stack.pop() + queue.poll() + a[i];
if (!stack.isEmpty()) {
queue.offer(str);
} else {
queue2.offer(str);
}
}
}
for (String e : queue2) {
String c = null;
String b = e.replaceAll("null", "");
System.out.println(b);
Pattern pr = Pattern.compile(".<" + args[0] + ".*" + args[0] + ">.");
Matcher m = pr.matcher(e);
while(m.find()) {
String res1 = m.group();
c = res1.substring(1, res1.length() - 1);
}
if(c != null) {
System.out.println(c);
}
}
}
}
}