Я пытаюсь получить последние строки x (в данном случае последние 5 строк) таблицы с помощью Jsoup. Но перед тем, как выбрать последние 5 детей, мне нужно применить некоторые фильтры для запроса выбора.Выбор последних x детей в Jsoup
Elements ptr = ptable.select("tr:gt(0):contains("+patern+")");
Это то, что я должен выбрать в первую очередь. Поскольку таблица содержит множество ненужных строк, я фильтрую первую строку (содержащую заголовки столбцов) и избавляясь от бесполезных строк, я использую текст patern, чтобы выбрать то, что мне нужно. (эта часть работает без проблем)
После этого шага мне нужно получить последние 5 результатов от остальных элементов. Я пробовал это
Elements ptr = ptable.select("tr:gt(0):contains("+patern+"):nth-last-child(-n+5)");
Но это не сработало. Пробовал nth-last-child (5), но все еще не работает. В качестве последнего результата я попытался;
Elements ptd = ptr.select("td:nth-last-child(-n+"+Integer.toString(ptd1.size()*5)+")");
Чтобы выбрать результаты как td, но все еще не работает. ("ptd1.size()" возвращает количество столбцов.)
Ну, в конце концов, я не смог получить последние 5 элементов после применения фильтров, которые я хочу. Нужно ли их выбирать после применения фильтров «gt (0)» и «содержит (« + patern + »)»?
пс. Содержимое таблицы является динамическим, поэтому я не могу пропустить первые строки x, чтобы получить последние 5.
Я использовал этот код 'Elements sublist = (Elements) ptr.subList (ptr.size() - 5, ptr.size());' но я получил эту ошибку. Я делаю что-то неправильно? 'java.lang.ClassCastException: java.util.AbstractList $ SubAbstractListRandomAccess не может быть передан в org.jsoup.select.Elements' – Soulcry
Это была моя ошибка - в Java это должно быть похоже на« Список sublist = ptr.subList (ptr.size() - 5, ptr.size()); '. Groovy отлично справляется с кастингом в этом случае ('List -> Elements' благодарит за динамические улучшения языка), но в Java он должен быть статически корректным. Я исправил ответ и образец кода в Gist. Извините за неудобства. –
Спасибо, сейчас работает. – Soulcry