Добрый день!
Использую Java в связке с HtmlElements
Есть у них типизированый элемент Table.
Мне необходимо выцепить данные из таблицы следуя заголовкам.
На этот случай предусмотрен метод table.getRowsAsStringMappedToHeadings()
Все бы ничего, но таблица имеет пустые элементы tr.
В них обычно вставлены сепараторы.
Соотственно, чтобы воспользоваться вышеуказанным методом необходимо от этих пустых рядов избавиться, т.к. в методе есть условие:
if (row.size() != headings.size()) {
throw new HtmlElementsException("Headings count is not equal to number of cells in row");
}
Сами ряды вытаскиваются методом table.getRows() который возвращает элемент типа List<List>, где List является элементами “td”
Мне заведомо известно, что размер List.size(); в успешном случае должен быть равен 10.
Значит, теоретически, можно удалить все листы, размер которых меньше 10.
К сожалению, как я не пытался, получить результат мне не удалось.
Использовал я следующие методы:
Iterator<List<WebElement>> iter = table.getRows().iterator();
while(iter.hasNext()){
List<WebElement> list = iter.next();
if(list.size < 10){
iter.remove();
}
}
В результате ничего удаленно не было.
Тогда я попробовал:
table.getRows().removeIf(
(List<WebElement> list)-> {return list.size < 10;}
);
Но и в этом случае, никакого результата получить не удалось.
Так же я выцыплял порядковый номер этих листов и пытался их удалить через table.getRows().remove(i), но старания так же были тщетными.
Вопрос заключается в том, где я ошибся и возможно ли это вообще, удалить из объекта Table ряды, меньшие заданному числу.
Спасибо!
P.s. Теоретически, можно отказаться от использования Table, прописать нужные пути Xpath’ом. Я знаю. Но в моем случае это таблица не одна, и для каждой хотелось бы иметь возможность модификации.