У меня есть таблица, которая содержит следующую логику.
- Таблица отображения списка имен
- Для каждой строки, содержащей
<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());
}
}
}
}