有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

java jsoup根据div标记id获取值

我有一个html,它有如下标记

 parent   <li class="pro pic notSold" status="0" >
 child      <ul><li></li><ul>
 parent   <li class="pro pic soldOut" status="-1" >
 child      <ul><li></li><ul>

如上所述,有多个父标签。我希望我的循环适用于所有父标记。 我试过了,元素indProducts=html。选择(“li”);这连孩子李都被拉住了。我不想那样。 我想编写这样的代码,如果

  • 类以pro-pic开头,那么它将被视为else skip。我该怎么办?是否有一个select子句类似于“like”或类似的东西。

  • 共 (2) 个答案

    1. # 1 楼答案

      这更精确,只需选择类属性以pro-pic开头的标记:

      Elements litags = yourcontent.select("li[class^=pro pic]");
      

      或者,如果您想确保只接受第一级儿童,您可以使用以下方法:

      Elements litags = yourcontent.select(" > li[class^=pro pic]");  
      

      *PS:我以yourcontent为元素进行了测试。我不知道是否适用于元素

    2. # 2 楼答案

      是的,jSoup提供了类似于like的东西。查看此selector用法链接

      您可以尝试以下方法:

      import org.jsoup.Jsoup;
      import org.jsoup.nodes.Document;
      import org.jsoup.select.Elements;
      
      
      public class JSoupTest 
      {
          public static void main(String[] args) 
          {
               String html =   "<li class='pro pic notSold' status='0' >";
               html+=      "<ul><li></li><ul>";
               html+=   "<li class='pro pic soldOut' status='-1' >";
               html+=      "<ul><li></li><ul>";
      
               Document doc = Jsoup.parse(html);
               Elements elems = doc.select("[class^=pro pic]");
      
              System.out.println(elems.size());
          }
      }
      

      Output = 2

      注意:pro pic开头的class太通用,将返回最外层的父级(以及一个内部子级)