Java JSoup:检索不包含特定属性的元素

Java JSoup:检索不包含特定属性的元素,java,jsoup,Java,Jsoup,我有一个包含以下逻辑的表 该表显示名称列表 对于包含…->的每一行,该行将不可见 因此,该表可能包含100行,但如果有20行包含class=hiderow,则用户只能在页面上看到80行。我想检索这80行(不是100行)的名称。因此,我需要解析出不包含class=hiderow的数据。我知道如何使用jsoup获取每个名称,我还看到文档中有 :不是与选择器不匹配的(选择器)元素。但我不确定如何使用它。请帮忙 编辑我已经想出了办法。如果有更好的办法,请告诉我。 EDIT2请使用BalusC提供的以下解

我有一个包含以下逻辑的表

  • 该表显示名称列表
  • 对于包含
    ->的每一行,该行将不可见
  • 因此,该表可能包含100行,但如果有20行包含
    class=hiderow
    ,则用户只能在页面上看到80行。我想检索这80行(不是100行)的名称。因此,我需要解析出不包含
    class=hiderow
    的数据。我知道如何使用
    jsoup
    获取每个名称,我还看到文档中有
    :不是与选择器不匹配的(选择器)元素。
    但我不确定如何使用它。请帮忙

    编辑我已经想出了办法。如果有更好的办法,请告诉我。
    EDIT2请使用BalusC提供的以下解决方案。它干净多了

    public void obtainPackageName(String urlLink) throws IOException{
        List<String> pdfList = new ArrayList<String>();
        URL url = new URL(urlLink);
        Document doc = Jsoup.parse(url, 3000);
        Element table = doc.select("table[id=mastertableid]").first();
        Iterator<Element> rowIter = table.select("tr").iterator();
        while(rowIter.hasNext()){
            Element row = rowIter.next();
            if(!row.className().contains("hiderow")){
                Element packageName = row.select("td[class=packagename]").first();
                if(packageName != null){
                    pdfList.add(packageName.text());
                }
    
            }
        }
    }
    
    public void-obtainPackageName(字符串urlink)引发IOException{
    List pdfList=new ArrayList();
    URL=新URL(URL链接);
    documentdoc=Jsoup.parse(url,3000);
    Element table=doc.select(“table[id=mastertableid]”)。first();
    迭代器rowIter=table.select(“tr”).Iterator();
    while(rowIter.hasNext()){
    元素行=rowIter.next();
    如果(!row.className().包含(“hiderow”)){
    元素packageName=row.select(“td[class=packageName]”);
    如果(packageName!=null){
    pdfList.add(packageName.text());
    }
    }
    }
    }
    
    您需要在感兴趣的元素上应用
    :not()
    (在您的情况下是
    tr
    ),然后将元素相关CSS选择器传递给它,元素不应在其上匹配(在您的情况下是
    .hiderow

    因此,这应该做到:

    Document document = Jsoup.connect(urlLink).get();
    Elements packagenames = document.select("#mastertableid tr:not(.hiderow) td.packagename");
    List<String> pdfList = new ArrayList<String>();
    
    for (Element packagename : packagenames) {
        pdfList.add(packagename.text()); 
    }
    
    documentdocument=Jsoup.connect(urlink.get();
    Elements packagename=document.select(“#mastertableid tr:not(.hiderow)td.packagename”);
    List pdfList=new ArrayList();
    对于(元素packagename:packagename){
    pdfList.add(packagename.text());
    }
    
    这个看起来干净多了,我要试试这个。蒂巴卢斯克