diff --git a/CHANGELOG.md b/CHANGELOG.md
index 191631139..268f22d9d 100644
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -13,6 +13,8 @@
* 【extra 】 修复Ftp设置超时问题(issue#I1GMTQ@Gitee)
* 【core 】 修复TreeUtil根据id查找子节点时的NPE问题(pr#120@Gitee)
* 【core 】 修复BeanUtil.copyProperties中Alias注解无效问题(issue#I1GK3M@Gitee)
+* 【core 】 修复CollUtil.containsAll空集合判断问题(issue#I1G9DE@Gitee)
+* 【core 】 修复XmlUtil.xmlToBean失败问题(issue#865@Github)
-------------------------------------------------------------------------------------------------------------
diff --git a/hutool-core/src/main/java/cn/hutool/core/collection/CollUtil.java b/hutool-core/src/main/java/cn/hutool/core/collection/CollUtil.java
index b2f3a74f6..3efe98bfa 100644
--- a/hutool-core/src/main/java/cn/hutool/core/collection/CollUtil.java
+++ b/hutool-core/src/main/java/cn/hutool/core/collection/CollUtil.java
@@ -307,7 +307,15 @@ public class CollUtil {
* @since 4.5.12
*/
public static boolean containsAll(Collection> coll1, Collection> coll2) {
- if (isEmpty(coll1) || isEmpty(coll2) || coll1.size() < coll2.size()) {
+ if(isEmpty(coll1)){
+ return isEmpty(coll2);
+ }
+
+ if(isEmpty(coll2)){
+ return true;
+ }
+
+ if (coll1.size() < coll2.size()) {
return false;
}
diff --git a/hutool-core/src/main/java/cn/hutool/core/date/DateUtil.java b/hutool-core/src/main/java/cn/hutool/core/date/DateUtil.java
index 6bd5f0bfd..ae35f4c3f 100644
--- a/hutool-core/src/main/java/cn/hutool/core/date/DateUtil.java
+++ b/hutool-core/src/main/java/cn/hutool/core/date/DateUtil.java
@@ -714,7 +714,14 @@ public class DateUtil extends CalendarUtil {
}
/**
- * 格式yyyy-MM-dd HH:mm:ss
+ * 解析日期时间字符串,格式支持:
+ *
+ *
+ * yyyy-MM-dd HH:mm:ss
+ * yyyy/MM/dd HH:mm:ss
+ * yyyy.MM.dd HH:mm:ss
+ * yyyy年MM月dd日 HH:mm:ss
+ *
*
* @param dateString 标准形式的时间字符串
* @return 日期对象
@@ -725,7 +732,13 @@ public class DateUtil extends CalendarUtil {
}
/**
- * 解析格式为yyyy-MM-dd的日期,忽略时分秒
+ * 解析日期字符串,忽略时分秒,支持的格式包括:
+ *
+ * yyyy-MM-dd
+ * yyyy/MM/dd
+ * yyyy.MM.dd
+ * yyyy年MM月dd日
+ *
*
* @param dateString 标准形式的日期字符串
* @return 日期对象
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 c7e6bd7bf..366f81763 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
@@ -835,7 +835,11 @@ public class XmlUtil {
* @since 5.2.4
*/
public static T xmlToBean(Node node, Class bean) {
- return BeanUtil.toBean(xmlToMap(node), bean);
+ final Map map = xmlToMap(node);
+ if(null != map && map.size() == 1){
+ return BeanUtil.toBean(map.get(bean.getSimpleName()), bean);
+ }
+ return BeanUtil.toBean(map, bean);
}
/**
@@ -1042,6 +1046,17 @@ public class XmlUtil {
return doc;
}
+ /**
+ * 将Bean转换为XML
+ *
+ * @param bean Bean对象
+ * @return XML
+ * @since 5.3.4
+ */
+ public static Document beanToXml(Object bean) {
+ return beanToXml(bean, null);
+ }
+
/**
* 将Bean转换为XML
*
diff --git a/hutool-core/src/test/java/cn/hutool/core/collection/CollUtilTest.java b/hutool-core/src/test/java/cn/hutool/core/collection/CollUtilTest.java
index 114265d91..c3b98bd01 100644
--- a/hutool-core/src/test/java/cn/hutool/core/collection/CollUtilTest.java
+++ b/hutool-core/src/test/java/cn/hutool/core/collection/CollUtilTest.java
@@ -36,7 +36,6 @@ public class CollUtilTest {
@Test
public void isNotEmptyTest(){
Assert.assertFalse(CollUtil.isNotEmpty((Collection>) null));
- ;
}
@Test
@@ -589,8 +588,11 @@ public class CollUtilTest {
public void containsAllTest() {
ArrayList list1 = CollUtil.newArrayList(1, 2, 3, 4, 5);
ArrayList list2 = CollUtil.newArrayList(5, 3, 1);
-
Assert.assertTrue(CollUtil.containsAll(list1, list2));
+
+ ArrayList list3 = CollUtil.newArrayList(1);
+ ArrayList list4 = CollUtil.newArrayList();
+ Assert.assertTrue(CollUtil.containsAll(list3, list4));
}
@Test
diff --git a/hutool-core/src/test/java/cn/hutool/core/date/DateUtilTest.java b/hutool-core/src/test/java/cn/hutool/core/date/DateUtilTest.java
index d769e06b9..73af5b1f6 100644
--- a/hutool-core/src/test/java/cn/hutool/core/date/DateUtilTest.java
+++ b/hutool-core/src/test/java/cn/hutool/core/date/DateUtilTest.java
@@ -4,6 +4,7 @@ import cn.hutool.core.collection.CollUtil;
import cn.hutool.core.date.BetweenFormater.Level;
import cn.hutool.core.date.format.FastDateFormat;
import org.junit.Assert;
+import org.junit.Ignore;
import org.junit.Test;
import java.text.SimpleDateFormat;
@@ -379,6 +380,14 @@ public class DateUtilTest {
Assert.assertEquals("2019-06-01 19:45:43", dateTime.toString());
}
+ @Test
+ @Ignore
+ public void parseTest8() {
+ String str = "2020-04-24 9:00:00";
+ DateTime dateTime = DateUtil.parse(str);
+ Assert.assertEquals("2019-06-01 19:45:43", dateTime.toString());
+ }
+
@Test
public void parseAndOffsetTest() {
// 检查UTC时间偏移是否准确
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 0838cca6b..44bf1afbf 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
@@ -4,6 +4,7 @@ import cn.hutool.core.collection.CollUtil;
import cn.hutool.core.io.resource.ResourceUtil;
import cn.hutool.core.map.MapBuilder;
import cn.hutool.core.map.MapUtil;
+import lombok.Data;
import org.junit.Assert;
import org.junit.Ignore;
import org.junit.Test;
@@ -174,4 +175,33 @@ public class XmlUtilTest {
document,XPathConstants.STRING);//
Assert.assertEquals("2020/04/15 21:01:21", value);
}
+
+ @Test
+ public void xmlToBeanTest(){
+ final TestBean testBean = new TestBean();
+ testBean.setReqCode("1111");
+ testBean.setAccountName("账户名称");
+ testBean.setOperator("cz");
+ testBean.setProjectCode("123");
+ testBean.setBankCode("00001");
+
+ final Document doc = XmlUtil.beanToXml(testBean);
+ Assert.assertEquals(TestBean.class.getSimpleName(), doc.getDocumentElement().getTagName());
+
+ final TestBean testBean2 = XmlUtil.xmlToBean(doc, TestBean.class);
+ Assert.assertEquals(testBean.getReqCode(), testBean2.getReqCode());
+ Assert.assertEquals(testBean.getAccountName(), testBean2.getAccountName());
+ Assert.assertEquals(testBean.getOperator(), testBean2.getOperator());
+ Assert.assertEquals(testBean.getProjectCode(), testBean2.getProjectCode());
+ Assert.assertEquals(testBean.getBankCode(), testBean2.getBankCode());
+ }
+
+ @Data
+ public static class TestBean{
+ private String ReqCode;
+ private String AccountName;
+ private String Operator;
+ private String ProjectCode;
+ private String BankCode;
+ }
}