boolean (XmlTag tag, Pattern pattern) { if (tag == null) return false; if ("documentation".equals(tag.getLocalName())) { String text = tag.getValue().getTrimmedText(); return pattern.matcher(text).matches(); } for (XmlTag subTag : tag.getSubTags()) { if (checkTag(subTag, pattern)) return true; } return false; }