Package Torello.HTML.NodeSearch
Class InnerTagInclusiveIterator
- java.lang.Object
-
- Torello.HTML.NodeSearch.InnerTagInclusiveIterator
-
public class InnerTagInclusiveIterator extends java.lang.Object
InnerTagInclusiveIterator 🠞
InnerTag:
This implies that Attribute key-value pairs located within the HTMLTagNode
instances themselves are used as a search criteria for retrievingTagNode's
.
Inclusive:
The word "Inclusive" is used to indicate that allHTMLNode's
between an opening and closing HTML-tag is requested. The concept is extremely similar to the Java-Script feature / "term"'.innerHTML'
, although in this (JavaHTML) JAR Library, noDOM Trees
are ever constructed. This method will return all nodes between the first matchingTagNode
element, and its closingTagNode
element pair.
Iterator:
This means that javaIterator's
(extension ofjava.util.ListIterator<E>
) are returned, rather than simple-results or vectors of results.Iterator's
make updating aVector<HTMLNode>
much easier (by avoiding the problems caused by stale index-pointers), and usually simply many of the retrieval & removal operations when large HTMLTABLE
andUL / OL
are involved.
Static
methods for building anHNLIInclusive
(which also extends the basicIterator
) for retrieving sub HTML-Vector's using match-critera which specify HTML Tag Attribute name and value requirements.
Methods Available
Method Explanation get (...) This will return an HNLIInclusive
(an HTML-package-specializedIterator
instance class) that cycles through "inclusive" (sublist - Open HTML tag to Closing HTML tag) matches into the vectorized-HTML-page parameter'html'
Method Parameters
Parameter Explanation Vector<? extends HTMLNode> html
This represents any vectorized HTML page, sub-page, or list of partial-elements. String htmlTag
When this parameter is present, only HTMLNode's
which are both instances ofclass TagNode
*and* have aTagNode.tok
field whose value is equal to this parameter'htmlTag'
, will be returned as matches.
COMMON EXAMPLES: Some common examples of valid'htmlTags'
are:a, div, img, table, tr, meta
as well as all other valid HTML element-tokens.
NOTE: This comparison is performed using a case-insensitive compare-method.
EXCEPTIONS: If this parameter is not a valid HTML element, anHTMLTokException
will be thrown.
Also, since this is an inclusive search, anInclusiveException
will be thrown if this parameter is an HTML singleton element (and, therefore, may not have a matching, closing tag/element).String... htmlTags
When this parameter is present, only HTMLNode's
which are both instances ofclass TagNode
*and* whoseTagNode.tok
fieldString
-value matches (is equal to) at least one of the elements in thisVarArgs String
parameter-set will be considered for a match. The same example HTML elements used in the previous parameter description apply here as well (a, div, img, table, tr, meta
) etc...
NOTE: This comparison is performed using a case-insensitive compare-method.
EXCEPTIONS: If even one of the elements in this parameter-set is an invalid HTML token, anHTMLTokException
will be thrown.
FINALLY: This parameter is only available as an option for search-methods that utilize thePredicate<TagNode>
parameter-option too. Most of the search-method options available in this class allow only one HTML 'token' element as a search parameter option.String innerTag
This parameter is mandatory for every method here, except one's that receive a Predicate<TagNode>
parameter. This parameter is used to identify the HTML-attribute or "Inner Tag" for whose values the programmer is comparing or testing.
NOTE: The comparison's performed on the HTML element for the attribute name are performed using a case-insensitive compare-method.
EXCEPTIONS: AnInnerTagKeyException
will be thrown if this parameter does not represent a valid HTML attribute name.
USE: Whenever this parameter is present, the value retrieved from the invocation oftagNode.AV(innerTag)
are always passed to the text-comparing methods listed below.
MOST COMMON: The most common exampleString's
used for parameter'innerTag'
(also called 'attribute') would include tags such as:'id', 'class', 'src', 'href', 'style', 'width', 'onclick', 'onload', etc...
TextComparitor tc
WORKS WITH: This parameter works in coordination with parameter 'innerTag'
. After the Attribute-value is retrieved from an HTML-element by method call:tagNode.AV(innerTag);
The results from this invocation are sent toTextComparitor
parameter'tc'
.
ALSO WITH: This parameter also utilizes / works alongside theString... compareStr
parameter for performing it's comparisons of the attribute list inside of a given HTML elementTagNode
.
When this parameter is present in a method-signature parameter-list, the decision of whether aTagNode
is to be included in the search result-set is defined by this parameter'sBiPredicate.test(...)
method.TextComparitor
is a JavaBiPredicate<String, String[]>
, which compares the attribute-value that was retrieved with a list of compare-String's
(parameter'compareStr'
).Pattern p
WORKS WITH: This parameter works in coordination with parameter 'innerTag'
. After the Attribute-value is retrieved from HTML-element by method call:tagNode.AV(innerTag);
The results from this call are sent to Regular-ExpressionPattern 'p'
.
When this parameter is present in the method-signature parameter-list, the decision of whether aTagNode
is to be included in the search result-set are made by the regular expression generated'Matcher'
against the attribute-value that was retrieved.
Specifically:p.asPredicate().test(attribute_value)
Predicate<String> p
WORKS WITH: This parameter works in coordination with parameter 'innerTag'
. After the Attribute-value is retrieved from an HTML-element by method call:tagNode.AV(innerTag);
The results from this call are sent to this JavaFunctional Interface Predicate
parameter'p'
.
When this parameter is present in the method-signature parameter-list, the decision of whether aTagNode
is to be included in the search result-set are made by the results of the JavaPredicate.test(String)
method.
Specifically:p.test(attribute_value)
String... compareStr
WORKS WITH: This parameter works in coordination with parameter TextComparitor tc
. This parameter supplies theString's
with which the comparisons of the attribute-value may be compared.
For Example: If the following values (below) were passed to these search-methods:- If:
'innerTag'
were equal to'class'
- And:
'tc'
were equal toTextComparitor.C
- And:
'compareStr'
were equal to'MyMainClass'
The search would match any and allTagNode
instances whose CSS'class'
contained'MyMainClass'
Predicate<TagNode>
When this parameter is present in the method-signature parameter-list, the decision of whether a TagNode
is to be included in the search result-set are made by calling thisPredicate's test(TagNode)
method.Return Values:
All methods return anHNLIInclusive
, which returns, one-at-a-time, index-pointersDotPair
of sub-lists or sub-pages into the vectorized-HTML page parameter'html'
.
Hi-Lited Source-Code:- View Here: Torello/HTML/NodeSearch/InnerTagInclusiveIterator.java
- Open New Browser-Tab: Torello/HTML/NodeSearch/InnerTagInclusiveIterator.java
File Size: 4,192 Bytes Line Count: 96 '\n' Characters Found
Stateless Class:This class neither contains any program-state, nor can it be instantiated. The@StaticFunctional
Annotation may also be called 'The Spaghetti Report'.Static-Functional
classes are, essentially, C-Styled Files, without any constructors or non-static member fields. It is a concept very similar to the Java-Bean's@Stateless
Annotation.
- 1 Constructor(s), 1 declared private, zero-argument constructor
- 12 Method(s), 12 declared static
- 0 Field(s)
-
-
Method Summary
Get Iterator, Any HTML-Tag Will Match Attribute-Value Test Modifier and Type Method Presence-Of, Only static HNLIInclusive
get(Vector<? extends HTMLNode> html, String innerTag)
String-Predicate static HNLIInclusive
get(Vector<? extends HTMLNode> html, String innerTag, Predicate<String> attributeValuePred)
Regular-Expression static HNLIInclusive
get(Vector<? extends HTMLNode> html, String innerTag, Pattern p)
TextComparitor static HNLIInclusive
get(Vector<? extends HTMLNode> html, String innerTag, TextComparitor tc, String... compareStr)
This search expects a customized Predicate<TagNode>
orAVT
instanceNONE static HNLIInclusive
get(Vector<? extends HTMLNode> html, Predicate<TagNode> p)
Get Iterator, Specified HTML-Tag(s) Only Attribute-Value Test Modifier and Type Method Presence-Of, Only static HNLIInclusive
get(Vector<? extends HTMLNode> html, String htmlTag, String innerTag)
String-Predicate static HNLIInclusive
get(Vector<? extends HTMLNode> html, String htmlTag, String innerTag, Predicate<String> attributeValuePred)
Regular-Expression static HNLIInclusive
get(Vector<? extends HTMLNode> html, String htmlTag, String innerTag, Pattern p)
TextComparitor static HNLIInclusive
get(Vector<? extends HTMLNode> html, String htmlTag, String innerTag, TextComparitor tc, String... compareStr)
This search expects a customized Predicate<TagNode>
orAVT
instanceNONE static HNLIInclusive
get(Vector<? extends HTMLNode> html, Predicate<TagNode> p, String... htmlTags)
-