@NotNull public static List<XmlTag> getElementTags(@NotNull Collection<? extends DomElement> list) { ArrayList<XmlTag> result = new ArrayList<>(list.size()); for (DomElement element : list) { XmlTag tag = element.getXmlTag(); if (tag != null) { result.add(tag); } } return result; }
public static void acceptAvailableChildren( final DomElement element, final DomElementVisitor visitor) { final XmlTag tag = element.getXmlTag(); if (tag != null) { for (XmlTag xmlTag : tag.getSubTags()) { final DomElement childElement = element.getManager().getDomElement(xmlTag); if (childElement != null) { childElement.accept(visitor); } } } }
@NotNull public static XmlTag[] getElementTags(@NotNull DomElement[] list) { XmlTag[] result = new XmlTag[list.length]; int i = 0; for (DomElement element : list) { XmlTag tag = element.getXmlTag(); if (tag != null) { result[i++] = tag; } } return result; }
@Nullable public static XmlTag findTag(@NotNull DomElement domElement, @NotNull String path) { List<String> elements = StringUtil.split(path, "."); if (elements.isEmpty()) return null; Pair<String, Integer> nameAndIndex = translateTagName(elements.get(0)); String name = nameAndIndex.first; Integer index = nameAndIndex.second; XmlTag result = domElement.getXmlTag(); if (result == null || !name.equals(result.getName())) return null; result = getIndexedTag(result, index); for (String each : elements.subList(1, elements.size())) { nameAndIndex = translateTagName(each); name = nameAndIndex.first; index = nameAndIndex.second; result = result.findFirstSubTag(name); if (result == null) return null; result = getIndexedTag(result, index); } return result; }