jsoup根据div标签id获取值

时间:2012-02-29 04:56:01

标签: java parsing jsoup

我有一个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>

上面有多个父

  • 标签。我希望我的循环适用于所有
  • 父标签。 我试过,Elements indProducts = html.select(“li”);这甚至拉动了孩子李。我不想那样。 我想编码,如果
  • 类以pro pic开头,那么它将被认为是跳过。我该怎么办?是否有一个类似于“喜欢”或类似的选择子句。

  • 2 个答案:

    答案 0 :(得分:0)

    是的,jSoup提供类似的东西。查看此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

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

    答案 1 :(得分:0)

    这更精确,只需选择标签li,其中类属性以pro pic开头:

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

    或者如果你想确定你只使用第一级别的孩子,你可以使用它:

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

    * PS:我测试了你的内容作为元素。我不知道是否适用于Elements。