diff --git a/protocol/src/main/java/com/zfoo/protocol/util/DomUtils.java b/protocol/src/main/java/com/zfoo/protocol/util/DomUtils.java index ff04eac8..919546a0 100644 --- a/protocol/src/main/java/com/zfoo/protocol/util/DomUtils.java +++ b/protocol/src/main/java/com/zfoo/protocol/util/DomUtils.java @@ -98,6 +98,31 @@ public abstract class DomUtils { return elements; } + public static List getElementsByTag(Element element, String tag) { + var elements = new ArrayList(); + + var queue = new LinkedList(); + queue.add(element); + while (!queue.isEmpty()) { + var ele = queue.poll(); + + var tagName = ele.getTagName(); + if (StringUtils.isNotEmpty(tagName) && tagName.equalsIgnoreCase(tag)) { + elements.add(ele); + continue; + } + + var eles = DomUtils.getChildElements(ele); + if (CollectionUtils.isNotEmpty(eles)) { + for (var e : eles) { + queue.offer(e); + } + } + } + + return elements; + } + /** * 只返回第一层的孩子节点,不返回第一层孩子节点的孩子节点 *