Jsoup仅在元素存在的情况下获取

Gio*_*i19 4 java element jsoup

我正在寻找一种可能只在它存在的情况下获取元素的可能性.否则我会收到错误,因为它不存在.

以下是我的案例:

  • 带有"tr"标签的表(例如3).
  • 代码正在调查每个"tr"以搜索特定数据.如果不存在,则查找下一个"tr"元素.这里,如果没有更多"tr"元素,则会发生错误.

是)我有的:

Element e = doc.getElementsByClass("table table-striped table-hover nofooter-").first();
Element tbody = e.select("tbody").first();
int j = 0;

while(tbody != null){
   Element tr = tbody.select("tr").get(j); //Look for the next "tr" --> HERE: error, because there is no more "tr", if string "A" not found in all existing "tr"s.
   if(tr != null){
      if(string == "A"){
         //Do something
      }
      j = j+1; //Increment for looking for the next "tr"
   }
}
Run Code Online (Sandbox Code Playgroud)

如果存在"next""tr"元素,我需要一个构造来检查.

Tot*_*Zam 6

问题在于,当您执行以下操作时,您将多个方法链接在一起:

tbody.select("tr").get(j);
Run Code Online (Sandbox Code Playgroud)

如果语句的第一部分tbody.select("tr")没有返回任何内容,则在尝试调用时会出现错误get(j),因为您无法在空对象上调用方法.

相反,打破你的方法分开线.

首先tbody.select("tr")将该结果保存到单独的elements变量中.然后,添加一个检查以查看elements变量是否为空.您可以通过执行!elements.isEmpty()或执行此操作elements.size() > 0.一旦确定变量不为空,就可以调用.get(j)变量上的方法并设置Element tr值.

生成的代码如下所示:

while(tbody != null){

    Elements elements = tbody.select("tr");

    if(!elements.isEmpty()){

        Element tr = temp.get(j);

        if(tr != null){
            if(string == "A"){
                //Do something
            }
            j = j + 1; //Increment for looking for the next "tr"
        }

    }

}
Run Code Online (Sandbox Code Playgroud)