Форум программистов, компьютерный форум, киберфорум
Программирование Android
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.92/13: Рейтинг темы: голосов - 13, средняя оценка - 4.92
0 / 0 / 0
Регистрация: 21.02.2014
Сообщений: 35

Проверка наличия элемента (библиотека jsoup)

18.11.2015, 16:02. Показов 2872. Ответов 7
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Всем привет!
Подскажите, как можно сделать проверку на наличие элемента? То бишь есть у меня, скажем, некий Document doc, в котором я выделяю элементы, преобразую в текст и пакую в объект, а объект в список. Но есть элементы (elementsData), которые попадаются не в каждом doc.select'e и в итоге я ловлю ошибку java.lang.IndexOutOfBoundsException. Соответственно, мне и нужно проверить, есть ли такой элемент, перед тем, как его добавлять.
Java
1
2
3
4
5
6
7
8
9
10
11
for (int i = 0; i < doc.select(".list_item_title").size(); i++) {
                News news = new News();
 
                elementsTitle = doc.select(".list_item_title");
                news.setTitle(elementsTitle.get(i).text());
 
                elementsData = doc.select(".list_item_date");
                news.setData(elementsData.get(i).text());
 
                newsList.add(news);
            }
0
Лучшие ответы (1)
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
18.11.2015, 16:02
Ответы с готовыми решениями:

Проверка наличия элемента в layout
Доброго времени суток. Подскажите - как провести проверку наличия элемента в коде. В моем случае необходимо провести проверку наличия...

Не получается распарсить rss на одном сайте. Библиотека jsoup
Вот сам сайт http://www.economist.com/sections/economics и его rss по ссылке view-source:http://www.economist.com/sections/economics...

Проверка наличия элемента во множестве
в Питоне есть такая штука как множества, и там, например, поиск во множестве элемента составляет O(1), что очень удобно есть ли что-нить...

7
2884 / 2296 / 769
Регистрация: 12.05.2014
Сообщений: 7,978
18.11.2015, 16:11
Лучший ответ Сообщение было отмечено gosteev как решение

Решение

Java
1
2
3
4
5
6
        Elements elements = document.select("bla-bla");
        if(!elements.isEmpty()) {
            for (Element e: elements) {
                // ля ля ля
            }
        }
и всегда когда делается select или getElements надо бы проверять на пустоту, а если какой-то метод может вернуть null (в описании обычно написано) то и на null
1
0 / 0 / 0
Регистрация: 21.02.2014
Сообщений: 35
18.11.2015, 16:16  [ТС]
Цитата Сообщение от Паблито Посмотреть сообщение
и всегда когда делается select или getElements надо бы проверять на пустоту, а если какой-то метод может вернуть null (в описании обычно написано) то и на null
А что пустота? Ну будет у меня в итоге пустой TextView, мне это не критично или тут что-то другое? В остальном спасибо за быстрый ответ! =)
0
2884 / 2296 / 769
Регистрация: 12.05.2014
Сообщений: 7,978
18.11.2015, 16:23
Пустота, в том смысле что в списке элементов может не быть ни одного элемента, то есть он будет пустой.

В моем варианте с циклом foreach можно и не делать проверку, так как если список будет пустой и цикл и не выполнится, но проверка обязательно нужна если по списку потом идти как в твоем примере.

Короче везде надо проверять, а то взяли список элементов и сразу достаем из него по индексу, а если там ничего нет? Мутновато объяснил
1
0 / 0 / 0
Регистрация: 21.02.2014
Сообщений: 35
18.11.2015, 17:46  [ТС]
Цитата Сообщение от Паблито Посмотреть сообщение
Пустота, в том смысле что в списке элементов может не быть ни одного элемента, то есть он будет пустой.
В моем варианте с циклом foreach можно и не делать проверку, так как если список будет пустой и цикл и не выполнится, но проверка обязательно нужна если по списку потом идти как в твоем примере.
Короче везде надо проверять, а то взяли список элементов и сразу достаем из него по индексу, а если там ничего нет? Мутновато объяснил
Ну я в целом вроде о том и спрашивал, как проверить, существует ли элемент. =) Собственно, сделал проверку так:
Java
1
2
3
4
elementsData = doc.select(".list_item_date");
                if (!elementsData.isEmpty()) {
                    news.setData(elementsData.get(i).text());
                }
В одном случае это сработало, в другом почему-то нет. Почему - фиг его знает, страницы идентичные, с которых это все парсится, только сам текст отличается. А как отдельно можно "проверить на пустоту", раз уж на то пошло?)
0
2884 / 2296 / 769
Регистрация: 12.05.2014
Сообщений: 7,978
18.11.2015, 17:56
код бредовый, ошибки нет, перечитай свой код пару раз и просто вникни в то, что он делает
не беги писать еще одно сообщение на форум, просто попытайся понять логику работы твоего кода (кусок кстати вырван из контекста)
0
0 / 0 / 0
Регистрация: 21.02.2014
Сообщений: 35
18.11.2015, 19:15  [ТС]
Походу задача должна совсем другая стоять на самом деле, если до меня правильно теперь дошло, как работает jsoup... Хотя в чем прям таки бредовость моего кода, я так и не уловил, проверяется, не пустой ли список на каждой итерации цикла? У меня (да и у тебя) проверяется, не пустой ли список (если я правильно понял логику работы isEmpty). При выполнении doc.select список Elements просто заполняется всеми найденными соответствующими элементами (опять же если я все правильно понял), а так как в моем случае элементов в списке elementsData оказывается меньше, чем в elementsTitle, по которому по сути сделан цикл, то и возвращается IndexOutOfBoundsException. Осталось придумать, как это обрабатывать, но это уже совсем другой вопрос походу =)
0
2884 / 2296 / 769
Регистрация: 12.05.2014
Сообщений: 7,978
18.11.2015, 19:26
бредовость в том, что судя по get(i)
селект делается в цикле каждый раз...один и тот же
его надо делать до цикла, а потом в цикле уже идти по элементам, либо делать getElements() и так далее
я всю задачу и не знаю
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
18.11.2015, 19:26
Помогаю со студенческими работами здесь

Проверка наличия элемента в Webbrowser
Как проверить есть ли элемент в Webbrowser? есть есть то showmessage('1'); Если нету то showmessage('2'); Пробую так: procedure...

Проверка наличия элемента в списке
Пусть имеется такой список public class Luck { public int ID { get; set; } public string Name...

JSON, проверка наличия элемента
Доброго дня, уважаемые. Буду благодарен за помощь в этом вопросе. Вот часть парсинга JSON: for i := 0 to JsonArray.Size - 1 do ...

Проверка наличия элемента на странице циклом и остановка в случае true
Доброго дня уважаемое сообщество. Возник очень неприятный вопрос. У нас есть скрипт который подгружает некий блок через некое время...

Проверка наличия элемента в массиве методом половинного деления (бинарный, бисекция)
Задан массив. С клавиатуры вводится значение и нужно проверить методом половинного деления есть ли такой элемент в массиве. Сортирую его...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
8
Ответ Создать тему
Новые блоги и статьи
моя боль
iceja 24.01.2026
Выложила интерполяцию кубическими сплайнами www. iceja. net REST сервисы временно не работают, только через Web. Написала за 56 рабочих часов этот сайт с нуля. При помощи perplexity. ai PRO , при. . .
Модель сукцессии микоризы
anaschu 24.01.2026
Решили писать научную статью с неким РОманом
http://iceja.net/ математические сервисы
iceja 20.01.2026
Обновила свой сайт http:/ / iceja. net/ , приделала Fast Fourier Transform экстраполяцию сигналов. Однако предсказывает далеко не каждый сигнал (см ограничения http:/ / iceja. net/ fourier/ docs ). Также. . .
http://iceja.net/ сервер решения полиномов
iceja 18.01.2026
Выкатила http:/ / iceja. net/ сервер решения полиномов (находит действительные корни полиномов методом Штурма). На сайте документация по API, но скажу прямо VPS слабенький и 200 000 полиномов. . .
Расчёт переходных процессов в цепи постоянного тока
igorrr37 16.01.2026
/ * Дана цепь(не выше 3-го порядка) постоянного тока с элементами R, L, C, k(ключ), U, E, J. Программа находит переходные токи и напряжения на элементах схемы классическим методом(1 и 2 з-ны. . .
Восстановить юзерскрипты Greasemonkey из бэкапа браузера
damix 15.01.2026
Если восстановить из бэкапа профиль Firefox после переустановки винды, то список юзерскриптов в Greasemonkey будет пустым. Но восстановить их можно так. Для этого понадобится консольная утилита. . .
Сукцессия микоризы: основная теория в виде двух уравнений.
anaschu 11.01.2026
https:/ / rutube. ru/ video/ 7a537f578d808e67a3c6fd818a44a5c4/
WordPad для Windows 11
Jel 10.01.2026
WordPad для Windows 11 — это приложение, которое восстанавливает классический текстовый редактор WordPad в операционной системе Windows 11. После того как Microsoft исключила WordPad из. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru