При парсинге страницы в Андроид приложение (пользую последнюю версию либ от Jsoup.org), выбираю только дочерние элементы(Выбираются все элементы, которые на схеме выделены розовым), а можно как нибудь выбрать сначала дочерние элементы с первого родителя, а потом только со второго и т.д.Как это примерно реализовать?
Ответ
Очевидное решение с выбором родительских элементов и последующим поиском детей в них.
public static void main(String[] args) {
String html = ""
+ "
"
+ "
"
+ " 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
Комментариев нет:
Отправить комментарий