1

我想从此网页获取日期、距离和鳍列:http ://www.gbgb.org.uk/raceCard.aspx?dogName= Ballymac%20Monleek 并在 JavaFX 的 TableView 中显示该数据。

我将如何使用 jSoup 选择指定的列,然后将这些列放入 TableView?

我当前的代码只能从该网页中获取“Fin”列 - 我发现很难弄清楚如何获取其他两列,然后我不确定如何将它们放入可观察列表中显示在表格视图中。

    Dog dog = (Dog)tblRunners.getSelectionModel().getSelectedItem();
    String selectedDog = dog.getName();

    //getHistory
    String dogPage = "http://www.gbgb.org.uk/raceCard.aspx?dogName=" + selectedDog;
    Document doc1 = Jsoup.connect(dogPage).get();

    Element tblHeader = doc1.select("tbody").first();
    for (Element element1 : tblHeader.children()){
        String position = element1.select("td:eq(4)").text();
        System.out.println("Position: " + position);

}

谢谢罗伯

4

1 回答 1

0
  1. 我会为页面中的数据使用 POJO,例如:
public class DogDetail {

    private String date;
    private String distance;
    private String fin;

    public String getDate() {
        return date;
    }
    public void setDate(String date) {
        this.date = date;
    }
    public String getDistance() {
        return distance;
    }
    public void setDistance(String distance) {
        this.distance = distance;
    }
    public String getFin() {
        return fin;
    }
    public void setFin(String fin) {
        this.fin = fin;
    }
}
  1. 我会在 tblHeader 变量中使用另一个选择路径,并使用该FXCollections.observableArrayList函数来获得一个可观察的列表。编码:
Element tblHeader = doc1.select("table.MasterTable_Web20 tbody").first();
List<DogDetail> data = new ArrayList<>();
for (Element element1 : tblHeader.children()){
    DogDetail dogDetail = new DogDetail();
    dogDetail.setDate(element1.select("td:eq(0)").text());
    dogDetail.setDistance(element1.select("td:eq(1)").text());
    dogDetail.setFin(element1.select("td:eq(4)").text());
    data.add(dogDetail);
}

TableView<DogDetail> table = new TableView<DogDetail>(FXCollections.observableArrayList(data));
于 2014-10-29T18:06:51.553 回答