From e0c995e1f8f186b7c535053cba3974fbcdac33b4 Mon Sep 17 00:00:00 2001 From: giveme0101 Date: Thu, 24 Sep 2020 14:31:10 +0800 Subject: [PATCH] =?UTF-8?q?:bug:=20#1777=20XML=E5=B7=A5=E5=85=B7=E7=B1=BB?= =?UTF-8?q?=E4=BF=AE=E5=A4=8D=E6=97=A0=E6=B3=95=E8=A7=A3=E6=9E=90?= =?UTF-8?q?=E8=BF=99=E7=A7=8D=E8=8A=82=E7=82=B9=E6=95=B0=E6=8D=AE?= =?UTF-8?q?=E7=9A=84=E9=97=AE=E9=A2=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../me/chanjar/weixin/common/util/XmlUtils.java | 16 ++++++++-------- 1 file changed, 8 insertions(+), 8 deletions(-) diff --git a/weixin-java-common/src/main/java/me/chanjar/weixin/common/util/XmlUtils.java b/weixin-java-common/src/main/java/me/chanjar/weixin/common/util/XmlUtils.java index c2ffdb001..cff2b9745 100644 --- a/weixin-java-common/src/main/java/me/chanjar/weixin/common/util/XmlUtils.java +++ b/weixin-java-common/src/main/java/me/chanjar/weixin/common/util/XmlUtils.java @@ -3,10 +3,7 @@ package me.chanjar.weixin.common.util; import com.google.common.collect.Lists; import com.google.common.collect.Maps; import com.google.common.collect.Sets; -import org.dom4j.Document; -import org.dom4j.DocumentException; -import org.dom4j.Element; -import org.dom4j.Node; +import org.dom4j.*; import org.dom4j.io.SAXReader; import org.dom4j.tree.DefaultText; import org.xml.sax.SAXException; @@ -50,14 +47,16 @@ public class XmlUtils { } private static Object element2MapOrString(Element element) { - Map result = Maps.newHashMap(); final List content = element.content(); - if (content.size() <= 1) { + final Set names = names(content); + + // 判断节点下有无非文本节点(非Text和CDATA),如无,直接取Text文本内容 + if (names.size() < 1) { return element.getText(); } - final Set names = names(content); + Map result = Maps.newHashMap(); if (names.size() == 1) { // 说明是个列表,各个子对象是相同的name List list = Lists.newArrayList(); @@ -90,7 +89,8 @@ public class XmlUtils { private static Set names(List nodes) { Set names = Sets.newHashSet(); for (Node node : nodes) { - if (node instanceof DefaultText) { + // 如果节点类型是Text或CDATA跳过 + if (node instanceof DefaultText || node instanceof CDATA) { continue; } names.add(node.getName());