View Javadoc
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   * XPath selector based on Xsoup.<br>
12   *
13   * @author code4crafter@gmail.com <br>
14   * @since 0.3.0
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  }