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 }