【问题标题】:Parsing a complex li tag解析复杂的 li 标签
【发布时间】:2018-02-22 03:01:46
【问题描述】:

我正在尝试使用 Jsoup 解析 HTML 文件。 HTML 中的某些文本不属于标签。

<li class="inactive"> 
  <span class="status label">inactive</span> 
  <a href="/officers/144662696" class="officer inactive" title="more info on MILLTOWN CORPORATE SERVICES">
     MILLTOWN CORPORATE SERVICES
  </a>
  member, 
  <span class="status label">inactive</span> 
  <a href="/companies/us_wv/193180" class="company inactive revoked_(failure_to_file_annual_report)" title="More Free And Open Company Data On EASTBRIDGE L.L.C. (West Virginia (US), 193180)">
    EASTBRIDGE L.L.C.
   </a> 
   (West Virginia (US), 
   <span class="start_date">25 May 2000</span>-<span class="end_date"> 1 Aug 2002</span>)  
</li>

我能够读取标签中的所有内容,但我正在尝试获取值 (美国西弗吉尼亚州)member

有没有办法在类之外和li 标记内获取值。

【问题讨论】:

  • 不确定jsoup,但是可以尝试获取元素的innerHTML。寻找暴露元素的html而不是文本值的api
  • 我已经使用 Jsoup 提取了所有其他字段。但我会尝试获取 innerHTML。

标签: java html parsing jsoup html-parsing


【解决方案1】:

您可能正在寻找类似Element#ownText 的东西。

这只会获取当前元素的文本,而不是所有子元素的组合文本。

Element listItem = doc.select("li.inactive").first();
System.out.println(listItem.ownText()); // prints "member, (West Virginia (US), -)"

【讨论】:

    【解决方案2】:

    您也可以使用前面的标签来获取没有嵌入任何标签的文本节点。如果我做对了,您希望在每个标签之后获取每个文本节点。尝试类似:

        String html = "<li class=\"inactive\"> \n"
                + "  <span class=\"status label\">inactive</span> \n"
                + "  <a href=\"/officers/144662696\" class=\"officer inactive\" title=\"more info on MILLTOWN CORPORATE SERVICES\">\n"
                + "     MILLTOWN CORPORATE SERVICES\n"
                + "  </a>\n"
                + "  member, \n"
                + "  <span class=\"status label\">inactive</span> \n"
                + "  <a href=\"/companies/us_wv/193180\" class=\"company inactive revoked_(failure_to_file_annual_report)\" title=\"More Free And Open Company Data On EASTBRIDGE L.L.C. (West Virginia (US), 193180)\">\n"
                + "    EASTBRIDGE L.L.C.\n"
                + "   </a> \n"
                + "   (West Virginia (US), \n"
                + "   <span class=\"start_date\">25 May 2000</span>-<span class=\"end_date\"> 1 Aug 2002</span>)  \n"
                + "</li>";
    
        Document doc = Jsoup.parse(html);
        Elements links = doc.select("a");
        for(Element e : links){
            System.out.println(e.nextSibling().toString());
        }
    

    【讨论】:

      猜你喜欢
      • 2015-01-04
      • 1970-01-01
      • 1970-01-01
      • 2012-09-07
      • 2012-11-07
      • 1970-01-01
      • 2020-10-29
      • 2021-06-20
      相关资源
      最近更新 更多