检查hasAttribute方法时,Jsoup抛出NullPointerException(Android)

时间:2018-09-21 07:04:10

标签: android android-studio nullpointerexception jsoup

我正在尝试使用Android Studio中的jsoup从网站中提取信息。我设置了条件,但无法避免应用程序崩溃。它引发NullPointerException错误。错误代码为:

Attempt to invoke virtual method 'boolean org.jsoup.nodes.Element.hasAttr(java.lang.String)' on a null object reference.

代码的相关部分是:

// Check if the related selections are not null
if (relatedNewsPage.select("meta[property=og:title]") != null &&
relatedNewsPage.select("meta[property=og:image]") != null &&
relatedNewsPage.select("meta[property=article:modified_time]") != null) {

    // Check if the related selections has desired attribute
    if(relatedNewsPage.selectFirst("meta[property=og:title]").
       hasAttr("content") && 
    relatedNewsPage.selectFirst("meta[property=og:image]").
       hasAttr("content") &&
    relatedNewsPage.selectFirst("meta[property=article:modified_time]").
       hasAttr("content")){

    //Then extract the news' title, imagelink and update time
      String title = relatedNewsPage.selectFirst("meta[property=og:title]").
             attr("content");
      String imageLink = relatedNewsPage.selectFirst("meta[property=og:image]").
             absUrl("content");
      String updateTime =  relatedNewsPage.selectFirst("meta[property=article:modified_time]").
             attr("content");

该错误与updateTime属性有关。有人可以帮忙吗?

1 个答案:

答案 0 :(得分:0)

您正在检查select上的空检查,但是在检索内容时您正在调用selectFirst

更改此

if (relatedNewsPage.select("meta[property=og:title]") != null &&
relatedNewsPage.select("meta[property=og:image]") != null &&
relatedNewsPage.select("meta[property=article:modified_time]") != null)

if (relatedNewsPage.selectFirst("meta[property=og:title]") != null &&
relatedNewsPage.selectFirst("meta[property=og:image]") != null &&
relatedNewsPage.selectFirst("meta[property=article:modified_time]") != null)