Using Tables
The first set of examples uses this simple HTML table:
<html><head><title>Table sample</title></head><body>
<table id="table1">
<tr>
<th>Number</th>
<th>Description</th>
</tr>
<tr>
<td>5</td>
<td>Bicycle</td>
</tr>
</table>
</body></html>
This example demonstrates how to iterate over all rows and cells:
final HtmlTable table = page.getHtmlElementById("table1");
for (final HtmlTableRow row : table.getRows()) {
System.out.println("Found row");
for (final HtmlTableCell cell : row.getCells()) {
System.out.println(" Found cell: " + cell.asNormalizedText());
}
}
The following sample shows how to access specific cells by zero-based row and column indices:
final WebClient webClient = new WebClient();
final HtmlPage page = webClient.getPage("http://foo.com");
final HtmlTable table = page.getHtmlElementById("table1");
// Access cell at row index 1 (second row) and column index 1 (second column)
final HtmlTableCell cell = table.getCellAt(1, 1);
System.out.println("Cell (1,1)=" + cell.asNormalizedText());
Complex Tables
The next examples use a more complex table containing header, footer, and body sections as well as a caption:
<html><head><title>Table sample</title></head><body>
<table id="table1">
<caption>My complex table</caption>
<thead>
<tr>
<th>Number</th>
<th>Description</th>
</tr>
</thead>
<tfoot>
<tr>
<td>7</td>
<td></td>
</tr>
</tfoot>
<tbody>
<tr>
<td>5</td>
<td>Bicycle</td>
</tr>
</tbody>
<tbody>
<tr>
<td>2</td>
<td>Tricycle</td>
</tr>
</tbody>
</table>
</body></html>
HtmlTableHeader, HtmlTableFooter, and HtmlTableBody elements group rows together.
A table can contain at most one header and one footer, but may contain multiple body sections.
Each section provides access to its rows via getRows():
final HtmlTableHeader header = table.getHeader();
final List<HtmlTableRow> headerRows = header.getRows();
final HtmlTableFooter footer = table.getFooter();
final List<HtmlTableRow> footerRows = footer.getRows();
for (final HtmlTableBody body : table.getBodies()) {
final List<HtmlTableRow> rows = body.getRows();
// process rows
}
Tables may also optionally include a caption element describing their content:
final String caption = table.getCaptionText();

