【问题标题】:Jsoup throws NullPointerException when checking the hasAttribute Method (Android)Jsoup 在检查 hasAttribute 方法时抛出 NullPointerException (Android)
【发布时间】:2018-09-21 15:39:13
【问题描述】:

我正在尝试使用 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 属性有关。有人可以帮忙吗?

【问题讨论】:

  • 您是否尝试将 relatedNewsPage.select 替换为 relatedNewsPage.selectFirst 在父 if 块中检查 null 的位置?
  • 好的,我会尝试这种方式,但在我的逻辑中,如果它通过了第一次检查,那么它将拥有我想要的元素。
  • 最好让它们保持同步,在所有位置使用selectselectFirst
  • 欢迎您!!

标签: android android-studio nullpointerexception jsoup


【解决方案1】:

您正在检查 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)

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多