java - Jsoup 仅在元素存在时获取元素

标签 java jsoup element

我正在寻找仅当元素存在时才获取该元素的可能性。否则我会得到一个错误,因为它不存在。

我的案例如下:

  • 带有“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"
   }
}

所以我需要一个结构来检查“下一个”“tr”元素是否存在。

最佳答案

问题是当您这样做时,您将多个方法链接在一起:

tbody.select("tr").get(j);

如果语句的第一部分 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"
        }

    }

}

关于java - Jsoup 仅在元素存在时获取元素,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41353417/

相关文章:

java - 在 Java 中将 latex 转换为 png 的库

java - 使用属性抓取 HTML

html - Jsoup 如何输出格式正确的 XML?

html - 考虑到旧浏览器,使用 HTML5 元素是否谨慎?

angular - 获取对元素 angular 4 的引用

asp.net - jquery:查找 id 具有特定模式的元素

java - 每x分钟检查一次JSON数据

java - 一个简单计算器代码的问题(Java)

Java 使用 uniVocity 解析器特定列数据有逗号且未括起来

jsoup在链接href中转义&符号