Java 解析复杂li标记

Java 解析复杂li标记,java,html,parsing,jsoup,html-parsing,Java,Html,Parsing,Jsoup,Html Parsing,我正在尝试使用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

我正在尝试使用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>
  • 不活跃的 委员:, 不活跃的 (西弗吉尼亚州(美国), (2000年5月25日至2002年8月1日)
  • 我能够读取标签中的所有内容,但我正在尝试获取值(美国西弗吉尼亚州)和成员


    是否有一种方法可以获取类外部和
    li
    标记内部的值

    您可能正在寻找类似的东西

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

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

    你可能正在寻找类似的东西

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

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

    您还可以使用前面的标记来获取未嵌入任何标记中的文本节点。如果我没弄错的话,您希望在每个文本节点后面都有一个标记。尝试以下方法:

        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());
        }
    
    String html=“
  • \n” +“不活动\n” +“\n” +成员,\n +“不活动\n” +“\n” +(美国西弗吉尼亚州),\n +“2000年5月25日至2002年8月1日\n” +“
  • ”; Document doc=Jsoup.parse(html); 元素链接=文件选择(“a”); 用于(元素e:链接){ System.out.println(例如nextSibling().toString()); }
    您还可以使用前面的标记获取未嵌入任何标记中的文本节点。如果我没弄错的话,您希望在每个文本节点后面都有一个标记。尝试以下方法:

        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());
        }
    
    String html=“
  • \n” +“不活动\n” +“\n” +成员,\n +“不活动\n” +“\n” +(美国西弗吉尼亚州),\n +“2000年5月25日至2002年8月1日\n” +“
  • ”; Document doc=Jsoup.parse(html); 元素链接=文件选择(“a”); 用于(元素e:链接){ System.out.println(例如nextSibling().toString()); }
    不确定jsoup,但您可以尝试获取元素的
    innerHTML
    。寻找一个api,它公开元素的html而不是文本值。我已经使用Jsoup提取了所有其他字段。但是我将尝试获取innerHTML。不确定jsoup,但是您可以尝试获取元素的
    innerHTML
    。寻找一个api,它公开元素的html而不是文本值。我已经使用Jsoup提取了所有其他字段。但我将尝试获取innerHTML。