Я не думаю, что помещать все содержимое файла в одну строку - это отличная идея, но тогда я полагаю, что это будет зависеть от количества содержимого в файле. Если контента много, я бы прочитал немного иначе. Было бы неплохо увидеть вымышленный пример того, что содержит файл.
Полагаю, вы можете попробовать этот маленький метод. В основе этого лежит регулярное выражение (RegEx) вместе с Pattern / Matcher для извлечения нужной подстроки между тегами.
Важно читать документы по методу:
<code>/**
* This method will retrieve a string contained between string tags. You
* specify what the starting and ending tags are within the startTag and
* endTag parameters. It is you who determines what the start and end tags
* are to be which can be any strings.<br><br>
*
* @param inputString (String) Any string to process.<br>
*
* @param startTag (String) The Start Tag String or String. Data content retrieved
* will be directly after this tag.<br><br>
*
* The supplied Start Tag criteria can contain a single special wildcard tag
* (~*~) providing you also place something like the closing chevron (>)
* for an HTML tag after the wildcard tag, for example:<pre>
*
* If we have a string which looks like this:
* {@code
* "<p style=\"padding-left:40px;\">Hello</p>"
* }
* (Note: to pass double quote marks in a string they must be excaped)
*
* and we want to use this method to extract the word "Hello" from between the
* two HTML tags then your Start Tag can be supplied as "<p~*~>" and of course
* your End Tag can be "</p>". The "<p~*~>" would be the same as supplying
* "<p style=\"padding-left:40px;\">". Anything between the characters <p and
* the supplied close chevron (>) is taken into consideration. This allows for
* contents extraction regardless of what HTML attributes are attached to the
* tag. The use of a wildcard tag (~*~) is also allowed in a supplied End
* Tag.
*
* Подстановочный знак используется в качестве специального тега, так что строки, которые на самом деле
* содержат звездочки (*) могут быть обработаны как обычные звездочки.
*
* @param endTag (String) Конечный тег или строка. Поиск данных будет
* конец до того, как этот тег будет достигнут.
*
* Предоставленные критерии конечного тега могут содержать один специальный шаблонный тег
* (~ * ~) при условии, что вы также поместите что-то вроде закрывающего шеврона (& gt;)
* для тега HTML после тега подстановки, например:
*
* If we have a string which looks like this:
* {@code
* "<p style=\"padding-left:40px;\">Hello</p>"
* }
* (Note: to pass double quote marks in a string they must be excaped)
*
* and we want to use this method to extract the word "Hello" from between the
* two HTML tags then your Start Tag can be supplied as "<p style=\"padding-left:40px;\">"
* and your End Tag can be "</~*~>". The "</~*~>" would be the same as supplying
* "</p>". Anything between the characters </ and the supplied close chevron (>)
* is taken into consideration. This allows for contents extraction regardless of what the
* HTML tag might be. The use of a wildcard tag (~*~) is also allowed in a supplied Start Tag.
*
* Подстановочный знак используется в качестве специального тега, так что строки, которые на самом деле
* содержат звездочки (*) могут быть обработаны как обычные звездочки.
*
* @param trimFoundData (Необязательно - Boolean - По умолчанию установлено значение true) По умолчанию
* все извлеченные данные обрезаются от начальных и конечных пробелов. Если
* вы не хотите этого, тогда укажите false для этого необязательного параметра.
*
* @return (1D String Array) Если существует более одной пары Начального и Конечного
* Теги, содержащиеся в предоставленной входной строке, затем помещают каждый набор
* в массив отдельно.
*
* @throws IllegalArgumentException, если любой предоставленный метод String аргумент
* нулевой ("").
* /
public static String [] getBetweenTags (String inputString, String startTag,
String endTag, логическое значение ... trimFoundData) {
if (inputString == null || inputString.equals ("") || startTag == null ||
startTag.equals ("") || endTag == ноль || endTag.equals ("")) {
бросить новый IllegalArgumentException ("\ ngetBetweenTags () Ошибка метода! -"
+ "Предоставленный аргумент метода содержит Null (\" \ ")! \ N"
+ «Предоставленные аргументы метода: \ n»
+ "========================== \ n"
+ "inputString = \" "+ inputString +" \ "\ n"
+ "startTag = \" "+ startTag +" \ "\ n"
+ "endTag = \" "+ endTag +" \ "\ n");
}
List list = new ArrayList <> ();
логическое trimFound = true;
if (trimFoundData.length> 0) {
trimFound = trimFoundData [0];
}
Matcher Matcher;
if (startTag.contains ("~ * ~") || endTag.contains ("~ * ~")) {
startTag = startTag.replace ("~ * ~", ". *?");
endTag = endTag.replace ("~ * ~", ". *?");
Pattern pattern = Pattern.compile ("(? Iu)" + startTag + "(. *?)" + EndTag);
matcher = pattern.matcher (inputString);
} еще {
String regexString = Pattern.quote (startTag) + "(? S) (. *?)" + Pattern.quote (endTag);
Pattern pattern = Pattern.compile ("(? Iu)" + regexString);
matcher = pattern.matcher (inputString);
}
while (matcher.find ()) {
Соответствие строки = matcher.group (1);
if (trimFound) {
match = match.trim ();
}
list.add (совпадение);
}
вернуть list.toArray (new String [list.size ()]);
}