1 package org.softnetwork.xml.dom.xpath;
2
3 import java.util.ArrayList;
4 import java.util.List;
5
6 import org.w3c.dom.Element;
7
8 /**
9 * @author stephane.manciot@ebiznext.com
10 *
11 */
12 final class XPathElement extends XPathToken {
13
14 /**
15 *
16 * @uml.property name="filters"
17 */
18 private XPathFilter[] filters;
19
20 XPathElement(String token, XPathFilter[] filters)
21 throws XPathFormatException {
22 super(token);
23 this.filters = filters;
24 }
25
26 /**
27 * @return Renvoie filters.
28 *
29 * @uml.property name="filters"
30 */
31 public XPathFilter[] getFilters() {
32 return filters;
33 }
34
35 public Element[] selectElements(Element current)
36 throws XPathFormatException {
37 Element[] elements = super.selectElements(current);
38 if (elements == null)
39 return EMPTY;
40 int len = elements.length;
41 if (elements.length <= 0)
42 return EMPTY;
43 List in = new ArrayList();
44 int i = 0;
45 for (; i < len; i++) {
46 Element element = elements[i];
47 boolean filtered = true;
48 if (filters != null) {
49 int j = 0;
50 int len2 = filters.length;
51 for (; j < len2; j++) {
52 XPathFilter filter = filters[j];
53 filtered = filter.doFilter(element);
54 if (!filtered)
55 break;
56 }
57 }
58 if (filtered)
59 in.add(element);
60 }
61 return (Element[]) in.toArray(new Element[0]);
62 }
63
64 }