#java #android #парсер #jsoup
При парсинге страницы в Андроид приложение (пользую последнюю версию либ от Jsoup.org), выбираю только дочерние элементы(Выбираются все элементы, которые на схеме выделены розовым), а можно как нибудь выбрать сначала дочерние элементы с первого родителя, а потом только со второго и т.д.Как это примерно реализовать?
Ответы
Ответ 1
Очевидное решение с выбором родительских элементов и последующим поиском детей в них. public static void main(String[] args) { String html = "" + "" + "Try jsoup " + "" + "" + "" + "" + "child1.1
" + "child1.2
" + "child1.3
" + "" + "" + "child2.1
" + "child2.2
" + "child2.3
" + "" + "" + "child3.1
" + "child3.2
" + "child3.3
" + "" + "" + "" + ""; Document doc = Jsoup.parse( html ); Elements parents = doc.select( "div" ); // выбор родителей System.out.printf( // можно выбрать элемент по индексу "parent[%d]: %s#%s%n", 2, parents.get( 2 ).tagName(), parents.get( 2 ).id() ); for ( Element parent : parents ) { System.out.printf( "parent: %s#%s%n", parent.tagName(), parent.id() ); for ( Element child : parent.select( "p" ) ) { // выбор внутри родителя System.out.println( child.text() ); } } } Выведет: parent[2]: div#parent3 parent: div#parent1 child1.1 child1.2 child1.3 parent: div#parent2 child2.1 child2.2 child2.3 parent: div#parent3 child3.1 child3.2 child3.3 parent: div#parent4 Используя псевдоселектор :has(selector), можно выбрать только те, в которых есть: Elements parents = doc.select( "div:has(p)" ); Тогда в выдачу не попадет #parent4.
Комментариев нет:
Отправить комментарий