From f1b88d52c76ff05c2887a7ec0435f598f8aa128d Mon Sep 17 00:00:00 2001 From: jaysunxiao Date: Sun, 2 Jan 2022 21:27:28 +0800 Subject: [PATCH] =?UTF-8?q?perf[protocol]:=20=E6=96=B0=E5=A2=9E=E9=80=9A?= =?UTF-8?q?=E8=BF=87Dom=E7=9A=84tag=E8=8E=B7=E5=8F=96=E6=A0=87=E7=AD=BE?= =?UTF-8?q?=E7=9A=84=E6=96=B9=E6=B3=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../java/com/zfoo/protocol/util/DomUtils.java | 25 +++++++++++++++++++ 1 file changed, 25 insertions(+) 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; + } + /** * 只返回第一层的孩子节点,不返回第一层孩子节点的孩子节点 *