【问题标题】:Parse html table to listview android with JSoup使用 JSoup 将 html 表解析为 listview android
【发布时间】:2015-09-17 20:43:49
【问题描述】:

我正在自己做一个项目。我遇到了一个问题,我希望你们中的一些人愿意帮助我。我想将某个站点的 html 表解析为 android listview。我已经有一些代码,但不幸的是我没有在我的列表视图中看到表格数据。所以出了点问题。我希望你能帮助我。

我知道调用正确的数据,因为当我将代码放在 Safari 控制台中时,我会得到我选择的表的结果。所以我认为 doc.select();是对的。

不幸的是,问题仍未解决,因为我得到了 NetworkOnMainThreadException。我知道我必须对 Async 做点什么。我查看了更多网站,但找不到关于 Async 的好的解释。如果有人能帮助我,将不胜感激。

这是我的代码:

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_clubkampioenschappen_singleen_dubbel);
    this.setTitle("Clubkampioenschappen Single en Dubbel");

    ArrayList<String> list = new ArrayList<String>();

    Document doc = null;
    try {
        doc = Jsoup.connect("https://tennisnaarden.planmysport.com/portal/page/pmsportal30/TVNaarden/Toernooien/Clubtoernooi").get();
    } catch (IOException e) {
        e.printStackTrace();
    }
    Elements elements = doc.select("#pcnt1383_8158836_1383_4326089_4326089 td:first-child");

    //list.add("Onderdelen");

    for(int i=0;i<elements.size();i++)
    {

        list.add(elements.get(i).text());
        System.out.println(elements.get(i).text());

    }

    ListAdapter OnderdeelAdapater = new ArrayAdapter<String>(this, android.R.layout.simple_list_item_1, list);
    ListView Onderdelen = (ListView) findViewById(R.id.Onderdelen);
    Onderdelen.setAdapter(OnderdeelAdapater);
}

【问题讨论】:

  • 如果您的“尝试”块失败,您需要稍后返回。相反,您尝试使用“select”语句从 doc 读取,但如果“try”失败,doc 将为 NULL,并且您将遇到另一个错误。

标签: android html listview jsoup android-arrayadapter


【解决方案1】:

如果选择正确,我们应该让 HTML 获得更多信息。 在我看来,您没有正确选择 html 标签。 您应该尝试在 td 上找到一个属性,以便您只能选择它们。 例如,如果主题是一个 css 类,您可以这样选择它:

Elements topicList = doc.select("h2.topic");

也许这个link 对你有帮助(这是我关于 JSOUP 的帖子)。 希望对你有帮助!

【讨论】:

  • 我知道调用正确的数据,因为当我将代码放入 safari 控制台时,我会得到我选择的表的结果。所以我认为 doc.select();是对的。
  • 感谢您的链接,但可以解释一下 parseURL 类。我不明白。代码在做什么?
  • 您已经知道解析 html 标签有不同的方法: - 直接使用标签 - 使用 css 类 我建议您查看是否有特定的 css 类 n td 标签,以便你可以“捕获”只是td。在这种情况下,您可以使用 tag.cs​​s_class
  • 我选择这个特定代码的主要原因。是该网站有 2 个具有相同类的 html 表。你可以查查看。它是我的代码中的站点,然后是名为“speelschema”的表,表“Planning”也具有相同的类。在这种情况下,我只需要名为“Speelschema”的表,现在不需要另一个表。
猜你喜欢
  • 2015-12-18
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-07-15
  • 2013-03-26
  • 1970-01-01
  • 1970-01-01
  • 2014-01-01
相关资源
最近更新 更多