2017-09-13 133 views
1

我想解析一個使用Jsoup的HTML文件。 HTML中有某些文本不在標籤下。解析一個複雜的li標籤

<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> 

我能夠讀取標籤的所有內容,但我想獲得價值(西弗吉尼亞州美國)成員

有沒有辦法在類之外和li標籤內獲取值。

+0

不確定jsoup,但您可以嘗試獲取元素的'innerHTML'。尋找暴露元素的html而不是文本值的api – TheChetan

+0

我已經使用Jsoup提取了所有其他字段。但我會嘗試去獲得innerHTML。 – Vini

回答

0

您可能正在尋找類似於Element#ownText的東西。

這隻獲取當前元素的文本,而不是所有孩子的組合文本。

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

您還可以使用之前的標籤來獲取未嵌入到任何標籤中的文本節點。如果我理解正確,你想在每個標籤之後得到每個文本節點。嘗試類似於:

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()); 
    }