有没有一种有效的方法来测试一个元素是否与Jsoup中的选择器匹配?
问题描述:
有没有一种有效的方法来检查给定的元素是否匹配选择器,比如jQuery中的is()方法(http://api.jquery.com/is/)?有没有一种有效的方法来测试一个元素是否与Jsoup中的选择器匹配?
我发现这个解决办法,但我认为它有糟糕的表现:
public static String cleanSelector(String selector) {
return selector.replaceAll(":link|:active|:visited|:hover|:after|:focus", "");
}
public static boolean elementIs(Element elem, String selector, Element root) {
Elements elems = root.select(cleanSelector(selector));
return elems.contains(elem);
}
答
使用包私人QueryParser
类:
Evaluator eval = QueryParser.parse(query);
boolean result = eval.matches(element.ownerDocument(), element);
我还希望评论关于这个答案如何能没有劫持到私人Jsop包中使用......否则它似乎是无用的。 – 2016-01-05 21:53:30
@XtraCoder现在有'is(String cssSelector)'方法,它正是这样做的。但它尚未在最新版本中发布,但已在[此次提交]中(https://github.com/jhy/jsoup/commit/4f707008353e272c12a7a6543d6ecfc666a7cc64)。 – stipx 2016-12-27 19:45:38