diff --git a/hutool-core/src/main/java/cn/hutool/core/util/StrUtil.java b/hutool-core/src/main/java/cn/hutool/core/util/StrUtil.java index 39da66a18..223b82002 100644 --- a/hutool-core/src/main/java/cn/hutool/core/util/StrUtil.java +++ b/hutool-core/src/main/java/cn/hutool/core/util/StrUtil.java @@ -1600,8 +1600,8 @@ public class StrUtil { return EMPTY; } - StringBuilder sb = new StringBuilder(); - int subLen = toIndex - fromIndex; + final StringBuilder sb = new StringBuilder(); + final int subLen = toIndex - fromIndex; str.toString().codePoints().skip(fromIndex).limit(subLen).forEach(v -> sb.append(Character.toChars(v))); return sb.toString(); } diff --git a/hutool-core/src/main/java/cn/hutool/core/util/XmlUtil.java b/hutool-core/src/main/java/cn/hutool/core/util/XmlUtil.java index 1d06096aa..404cfa9c6 100644 --- a/hutool-core/src/main/java/cn/hutool/core/util/XmlUtil.java +++ b/hutool-core/src/main/java/cn/hutool/core/util/XmlUtil.java @@ -5,6 +5,7 @@ import cn.hutool.core.exceptions.UtilException; import cn.hutool.core.io.FileUtil; import cn.hutool.core.io.IoUtil; import cn.hutool.core.lang.Assert; +import cn.hutool.core.lang.Console; import cn.hutool.core.map.MapUtil; import org.w3c.dom.Document; import org.w3c.dom.Element; @@ -745,6 +746,7 @@ public class XmlUtil { if (false == isElement(childNode)) { continue; } + childEle = (Element) childNode; final Object value = result.get(childEle.getNodeName()); Object newValue = null; @@ -753,11 +755,14 @@ public class XmlUtil { final Map map = xmlToMap(childEle); if (MapUtil.isNotEmpty(map)) { newValue = map; + } else{ + newValue = childEle.getTextContent(); } } else { newValue = childEle.getTextContent(); } + if (null != newValue) { if (null != value) { if (value instanceof List) { diff --git a/hutool-core/src/test/java/cn/hutool/core/util/XmlUtilTest.java b/hutool-core/src/test/java/cn/hutool/core/util/XmlUtilTest.java index c29d8583c..6abdaeb57 100644 --- a/hutool-core/src/test/java/cn/hutool/core/util/XmlUtilTest.java +++ b/hutool-core/src/test/java/cn/hutool/core/util/XmlUtilTest.java @@ -1,6 +1,7 @@ package cn.hutool.core.util; import cn.hutool.core.collection.CollUtil; +import cn.hutool.core.lang.Console; import cn.hutool.core.map.MapBuilder; import cn.hutool.core.map.MapUtil; import org.junit.Assert; @@ -74,15 +75,18 @@ public class XmlUtilTest { + "1490"// + "885"// + "1"// + + "subText"// + ""; Map map = XmlUtil.xmlToMap(xml); + Console.log(map); - Assert.assertEquals(5, map.size()); + Assert.assertEquals(6, map.size()); Assert.assertEquals("Success", map.get("returnstatus")); Assert.assertEquals("ok", map.get("message")); Assert.assertEquals("1490", map.get("remainpoint")); Assert.assertEquals("885", map.get("taskID")); Assert.assertEquals("1", map.get("successCounts")); + Assert.assertEquals("subText", ((Map)map.get("newNode")).get("sub")); } @Test