From 75c63a24deccb9273796787ee8b54f1bf8e73400 Mon Sep 17 00:00:00 2001 From: xiajun Date: Thu, 24 Sep 2020 11:12:42 +0800 Subject: [PATCH] =?UTF-8?q?=E4=BF=AE=E5=A4=8D=E6=97=A0=E6=B3=95=E8=A7=A3?= =?UTF-8?q?=E6=9E=90....=E8=BF=99=E7=A7=8D?= =?UTF-8?q?=E8=8A=82=E7=82=B9=E6=95=B0=E6=8D=AE=EF=BC=8C=E5=A6=82=EF=BC=9A?= =?UTF-8?q?=20String=20xml=20=3D=20"16008552482?= =?UTF-8?q?0";=20=E8=A7=A3=E6=9E=90=E5=90=8E=EF=BC=9A=20ExtAttr=3D=3D=20?= =?UTF-8?q?null=20=E4=BF=AE=E5=A4=8D=E5=90=8E=EF=BC=9AExtAttr=3D{Item=3D[{?= =?UTF-8?q?Type=3D0,=20Value=3D10007000000,=20Text=3D{Value=3D[10007000000?= =?UTF-8?q?]},=20Name=3D=E5=B7=A5=E5=8F=B7}]}?= 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 c2ffdb001b..cff2b97455 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 @@ 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 static Map xml2Map(String xmlString) { } 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 @@ private static Object element2MapOrString(Element element) { 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());