Насколько я понимаю, когда документ загружается в Jsoup с использованием Jsoup.parse()
, синтаксический анализ снова не требуется, поскольку аккуратное иерархическое дерево готово для использования программистом.
Но я не уверен, что верх-level select () является более дорогостоящим, чем select на внутреннем уровне. (*).
Например, если у нас есть <p>
, похороненный во многих вложенных <div>
s, и родительский элемент <p>
являетсяуже доступно в программе, будет ли любая разница в производительности между:
document.select("p.pclass")
и
pImediateParent.select("p.pclass")
?
Как это работаетв Jsoup?
ОБНОВЛЕНИЕ: Основываясь на ответе ниже, я понимаю, что и document.select()
и pImediateParent.select()
используют одинаковый точный статический метод , только сдругой корень в качестве второго параметра:
public Elements select(String query) {
return Selector.select(query, this);
}
Который переводит в :
/**
* Find elements matching selector.
*
* @param query CSS selector
* @param root root element to descend into
* @return matching elements, empty if not
*/
public static Elements select(String query, Element root) {
return new Selector(query, root).select();
}
Я не удивлен, но теперь вопрос в том, как это сделать query
Работа?Итерирует ли он, чтобы найти запрашиваемый элемент?Это запрос произвольного доступа (как в хэш-таблице)?