1 package us.codecraft.webmagic.selector;
2
3
4 import java.util.List;
5 import org.apache.commons.collections4.CollectionUtils;
6 import org.jsoup.nodes.Element;
7 import us.codecraft.xsoup.XPathEvaluator;
8 import us.codecraft.xsoup.Xsoup;
9
10
11
12
13
14
15
16 public class XpathSelector extends BaseElementSelector {
17
18 private XPathEvaluator xPathEvaluator;
19
20 public XpathSelector(String xpathStr) {
21 this.xPathEvaluator = Xsoup.compile(xpathStr);
22 }
23
24 @Override
25 public String select(Element element) {
26 return xPathEvaluator.evaluate(element).get();
27 }
28
29 @Override
30 public List<String> selectList(Element element) {
31 return xPathEvaluator.evaluate(element).list();
32 }
33
34 @Override
35 public Element selectElement(Element element) {
36 List<Element> elements = selectElements(element);
37 if (CollectionUtils.isNotEmpty(elements)){
38 return elements.get(0);
39 }
40 return null;
41 }
42
43 @Override
44 public List<Element> selectElements(Element element) {
45 return xPathEvaluator.evaluate(element).getElements();
46 }
47
48 @Override
49 public boolean hasAttribute() {
50 return xPathEvaluator.hasAttribute();
51 }
52 }