Looly 5 年之前
父节点
当前提交
bd4a0a075f

+ 2 - 0
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)
 
 -------------------------------------------------------------------------------------------------------------
 

+ 9 - 1
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;
 		}
 

+ 15 - 2
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
+	 * 解析日期时间字符串,格式支持:
+	 *
+	 * <pre>
+	 * yyyy-MM-dd HH:mm:ss
+	 * yyyy/MM/dd HH:mm:ss
+	 * yyyy.MM.dd HH:mm:ss
+	 * yyyy年MM月dd日 HH:mm:ss
+	 * </pre>
 	 *
 	 * @param dateString 标准形式的时间字符串
 	 * @return 日期对象
@@ -725,7 +732,13 @@ public class DateUtil extends CalendarUtil {
 	}
 
 	/**
-	 * 解析格式为yyyy-MM-dd的日期,忽略时分秒
+	 * 解析日期字符串,忽略时分秒,支持的格式包括:
+	 * <pre>
+	 * yyyy-MM-dd
+	 * yyyy/MM/dd
+	 * yyyy.MM.dd
+	 * yyyy年MM月dd日
+	 * </pre>
 	 *
 	 * @param dateString 标准形式的日期字符串
 	 * @return 日期对象

+ 16 - 1
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> T xmlToBean(Node node, Class<T> bean) {
-		return BeanUtil.toBean(xmlToMap(node), bean);
+		final Map<String, Object> map = xmlToMap(node);
+		if(null != map && map.size() == 1){
+			return BeanUtil.toBean(map.get(bean.getSimpleName()), bean);
+		}
+		return BeanUtil.toBean(map, bean);
 	}
 
 	/**
@@ -1046,6 +1050,17 @@ public class XmlUtil {
 	 * 将Bean转换为XML
 	 *
 	 * @param bean      Bean对象
+	 * @return XML
+	 * @since 5.3.4
+	 */
+	public static Document beanToXml(Object bean) {
+		return beanToXml(bean, null);
+	}
+
+	/**
+	 * 将Bean转换为XML
+	 *
+	 * @param bean      Bean对象
 	 * @param namespace 命名空间,可以为null
 	 * @return XML
 	 * @since 5.2.4

+ 4 - 2
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<Integer> list1 = CollUtil.newArrayList(1, 2, 3, 4, 5);
 		ArrayList<Integer> list2 = CollUtil.newArrayList(5, 3, 1);
-
 		Assert.assertTrue(CollUtil.containsAll(list1, list2));
+
+		ArrayList<Integer> list3 = CollUtil.newArrayList(1);
+		ArrayList<Integer> list4 = CollUtil.newArrayList();
+		Assert.assertTrue(CollUtil.containsAll(list3, list4));
 	}
 
 	@Test

+ 9 - 0
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;
@@ -380,6 +381,14 @@ public class DateUtilTest {
 	}
 
 	@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时间偏移是否准确
 		String str = "2019-09-17T13:26:17.948Z";

+ 30 - 0
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;
+	}
 }