@@ -24,6 +24,7 @@ public class Extractors {
2424 private String html ;
2525 private List <String > htmlList ;
2626 private Map <String , List <Extractor >> extractorsMap = Maps .newLinkedHashMap ();
27+ private Map <String , List <Filter >> filtersMap = Maps .newLinkedHashMap ();
2728 private String prevField ;
2829
2930 public Extractors (String html ) {
@@ -55,6 +56,14 @@ public Extractors with(Extractor extractor) {
5556 return this ;
5657 }
5758
59+ public Extractors filter (Filter filter ) {
60+ Validate .notNull (prevField , "must call extract method first!" );
61+ List <Filter > filters = filtersMap .getOrDefault (prevField , Lists .newLinkedList ());
62+ filters .add (filter );
63+ filtersMap .put (prevField , filters );
64+ return this ;
65+ }
66+
5867
5968 /**
6069 * split html use listable extractor
@@ -74,6 +83,10 @@ public String asString() {
7483 for (Extractor extractor : extractors ) {
7584 result = extractor .extract (result );
7685 }
86+ List <Filter > filters = filtersMap .getOrDefault (DEFAULT_FIELD , Lists .newLinkedList ());
87+ for (Filter filter : filters ) {
88+ result = filter .process (result );
89+ }
7790 return result ;
7891 }
7992
@@ -86,6 +99,10 @@ public Map<String, String> asMap() {
8699 for (Extractor extractor : extractors ) {
87100 result = extractor .extract (result );
88101 }
102+ List <Filter > filters = filtersMap .getOrDefault (name , Lists .newLinkedList ());
103+ for (Filter filter : filters ) {
104+ result = filter .process (result );
105+ }
89106 try {
90107 map .put (name , result );
91108 } catch (Exception e ) {
@@ -107,6 +124,10 @@ public List<Map<String, String>> asMapList() {
107124 for (Extractor extractor : extractors ) {
108125 result = extractor .extract (result );
109126 }
127+ List <Filter > filters = filtersMap .getOrDefault (name , Lists .newLinkedList ());
128+ for (Filter filter : filters ) {
129+ result = filter .process (result );
130+ }
110131 map .put (name , result );
111132 }
112133 mapList .add (map );
@@ -124,6 +145,10 @@ public <T> T asBean(Class<T> clazz) {
124145 for (Extractor extractor : extractors ) {
125146 result = extractor .extract (result );
126147 }
148+ List <Filter > filters = filtersMap .getOrDefault (name , Lists .newLinkedList ());
149+ for (Filter filter : filters ) {
150+ result = filter .process (result );
151+ }
127152 try {
128153 Reflect .on (entity ).set (name , result );
129154 } catch (Exception e ) {
@@ -150,6 +175,10 @@ public <T> List<T> asBeanList(Class<T> clazz) {
150175 for (Extractor extractor : extractors ) {
151176 result = extractor .extract (result );
152177 }
178+ List <Filter > filters = filtersMap .getOrDefault (name , Lists .newLinkedList ());
179+ for (Filter filter : filters ) {
180+ result = filter .process (result );
181+ }
153182 try {
154183 Reflect .on (entity ).set (name , result );
155184 } catch (Exception e ) {
0 commit comments