File tree Expand file tree Collapse file tree
main/java/org/jsoup/select
test/java/org/jsoup/select Expand file tree Collapse file tree Original file line number Diff line number Diff line change 22
33import org .jsoup .helper .Validate ;
44import org .jsoup .nodes .Element ;
5+ import org .jsoup .nodes .FormElement ;
56import org .jsoup .nodes .Node ;
67
78import java .util .*;
@@ -487,6 +488,19 @@ public Elements traverse(NodeVisitor nodeVisitor) {
487488 return this ;
488489 }
489490
491+ /**
492+ * Get the {@link FormElement} forms from the selected elements, if any.
493+ * @return a list of FormElements pulled from the matched elements. The list will be empty if the elements contain
494+ * no forms.
495+ */
496+ public List <FormElement > forms () {
497+ ArrayList <FormElement > forms = new ArrayList <FormElement >();
498+ for (Element el : contents )
499+ if (el instanceof FormElement )
500+ forms .add ((FormElement ) el );
501+ return forms ;
502+ }
503+
490504 // implements List<Element> delegates:
491505 public int size () {return contents .size ();}
492506
Original file line number Diff line number Diff line change 33import org .jsoup .Jsoup ;
44import org .jsoup .TextUtil ;
55import org .jsoup .nodes .Document ;
6+ import org .jsoup .nodes .FormElement ;
67import org .jsoup .nodes .Node ;
78import org .junit .Test ;
9+
10+ import java .util .List ;
11+
812import static org .junit .Assert .*;
913
1014/**
@@ -252,4 +256,17 @@ public void tail(Node node, int depth) {
252256 });
253257 assertEquals ("<div><p><#text></#text></p></div><div><#text></#text></div>" , accum .toString ());
254258 }
259+
260+ @ Test public void forms () {
261+ Document doc = Jsoup .parse ("<form id=1><input name=q></form><div /><form id=2><input name=f></form>" );
262+ Elements els = doc .select ("*" );
263+ assertEquals (9 , els .size ());
264+
265+ List <FormElement > forms = els .forms ();
266+ assertEquals (2 , forms .size ());
267+ assertTrue (forms .get (0 ) != null );
268+ assertTrue (forms .get (1 ) != null );
269+ assertEquals ("1" , forms .get (0 ).id ());
270+ assertEquals ("2" , forms .get (1 ).id ());
271+ }
255272}
You can’t perform that action at this time.
0 commit comments