/** * Returns a list of all {@link StartTag} objects of the specified {@linkplain StartTagType type} that are {@linkplain #encloses(Segment) enclosed} by this segment. * <p> * See the {@link Tag} class documentation for more details about the behaviour of this method. * <p> * Specifying a <code>null</code> argument to the <code>startTagType</code> parameter is equivalent to {@link #getAllStartTags()}. * * @param startTagType the {@linkplain StartTagType type} of tags to get. * @return a list of all {@link StartTag} objects of the specified {@linkplain StartTagType type} that are {@linkplain #encloses(Segment) enclosed} by this segment. */ public List<StartTag> getAllStartTags(final StartTagType startTagType) { if (startTagType==null) return getAllStartTags(); StartTag startTag=(StartTag)checkTagEnclosure(Tag.getNextTag(source,begin,startTagType)); if (startTag==null) return Collections.emptyList(); final ArrayList<StartTag> list=new ArrayList<StartTag>(); do { list.add(startTag); startTag=(StartTag)checkTagEnclosure(startTag.getNextTag(startTagType)); } while (startTag!=null); return list; }
attributes.appendTidy(sb,getNextTag()); } catch (IOException ex) {throw new RuntimeException(ex);} // never happens if (startTagType==StartTagType.NORMAL && getElement().getEndTag()==null && !HTMLElements.getEndTagOptionalElementNames().contains(name)) sb.append(" /");
list.add(startTag); while (true) { startTag=checkEnclosure((StartTag)startTag.getNextTag(StartTagType.NORMAL)); if (startTag==null) break; if (startTag.name.equals(name) || (startTag.name.startsWith(name) && startTag.isPartialNameSearchMatch(name))) list.add(startTag);
if (startTag.name.startsWith(searchName) && startTag.isPartialNameSearchMatch(searchName)) return startTag; if (startTag.name.length()<searchName.length() && source.getParseText().containsAt(searchName,startTag.begin+searchStartTagType.startDelimiterPrefix.length())) return startTag; startTag=(StartTag)startTag.getNextTag(searchStartTagType);