【问题标题】:jSoup get data from webpage and display in JavaFX TableViewjSoup 从网页中获取数据并在 JavaFX TableView 中显示
【发布时间】:2014-10-29 16:53:24
【问题描述】:

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

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

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

    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);

}

谢谢 抢

【问题讨论】:

    标签: java javafx jsoup observablelist


    【解决方案1】:
    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));

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-09-17
      • 2018-11-13
      • 2018-12-15
      • 2021-05-25
      相关资源
      最近更新 更多