java JSoup:检索不包含特定属性的元素
我有一个包含以下逻辑的表
- 该表显示名称列表
- 对于包含
<tr class=hiderow><td class=packagename>...</td></tr>
->;此行将不可见李>
因此,表可能包含100行,但是如果有20行包含class=hiderow
,那么用户只能在页面上看到80行。我想检索这80行(不是100行)的名称。所以我需要解析出不包含class=hiderow
的数据。我知道如何使用jsoup
获得每个名字,我还看到文档中有
:not(selector) elements that do not match the selector.
但我不知道如何使用它。请帮忙
编辑我已经想出了办法。如果有更好的办法,请告诉我
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());
}
}
}
}
# 1 楼答案
你需要在感兴趣的元素(在你的例子中是
tr
)上应用:not()
,然后将元素相关的CSS选择器传递给它,元素不应该匹配它(在你的例子中是.hiderow
)因此,这应该做到: