Если вы хотите, чтобы List<HtmlTableCell>
представлял данные в данном столбце вашей HTML-таблицы, вам нужно использовать getCellAt , который принимает индекс строки и индекс столбца.
IntStream.range(0, numberOfColumns)
.mapToObj(colIndex -> IntStream.range(0, numberOfRows)
.mapToObj(rowIndex -> myTable.getCellAt(rowIndex, colIndex)).collect(toList()))
.collect(toList());
, где numberOfColumns
должно быть заменено количеством столбцов в вашей таблице HTML, а numberOfRows
должно быть заменено количеством строк в вашей таблице HTML.
Это даст List<List<HtmlTableCell>>
, где каждый List<HtmlTableCell>
- это все ячейки для каждого столбца.
Для полноты здесь вы можете отсортировать каждый List<HtmlTableCell>
, то есть данные каждого столбца.
List<List<HtmlTableCell>> result =
IntStream.range(0, numberOfColumns)
.mapToObj(colIndex -> IntStream.range(0, numberOfRows)
.mapToObj(rowIndex -> myTable.getCellAt(rowIndex, colIndex))
.sorted(Comparator.comparing(HtmlTableCell::asText))
.collect(toList()))
.collect(toList());
и зарегистрируйте его:
// concatenate each cell data of each column separated by a pipe and then separate each column data by a line separator.
String joined = result.stream()
.map(l -> l.stream().map(HtmlTableCell::asText).collect(Collectors.joining("|")))
.collect(Collectors.joining(System.lineSeparator()));
// log it!
LOG.info(joined);
Обратите внимание, что если все, что вы делаете, это ведение журнала, то не стоит собирать промежуточное значение List<List<HtmlTableCell>>
, вы можете получить требуемый результат как:
String joined = IntStream.range(0, numberOfColumns)
.mapToObj(colIndex -> IntStream.range(0, numberOfRows)
.mapToObj(rowIndex -> myTable.getCellAt(rowIndex, colIndex).asText())
.sorted()
.collect(Collectors.joining("|")))
.collect(Collectors.joining(System.lineSeparator()));
LOG.info(joined);