mirror of
https://gitee.com/chinabugotech/hutool.git
synced 2025-07-21 15:09:48 +08:00
!346 解决 xmlutil 只能解析一层的bug, 新增 XmlBeanUtil工具
Merge pull request !346 from dazer007/v5-dev
This commit is contained in:
@@ -0,0 +1,103 @@
|
||||
package cn.hutool.core.util;
|
||||
|
||||
import org.junit.Assert;
|
||||
import org.junit.Test;
|
||||
|
||||
import javax.xml.bind.annotation.*;
|
||||
|
||||
/**
|
||||
* {@link XmlBeanUtil} 工具类
|
||||
*
|
||||
* @author dazer
|
||||
* 测试 xml 和 bean 互转工具类
|
||||
*/
|
||||
public class XmlBeanUtilTest {
|
||||
|
||||
@Test
|
||||
public void convertToXmlTest() {
|
||||
SchoolVo schoolVo = new SchoolVo();
|
||||
schoolVo.setSchoolName("西安市第一中学");
|
||||
schoolVo.setSchoolAddress("西安市雁塔区长安堡一号");
|
||||
|
||||
SchoolVo.RoomVo roomVo = new SchoolVo.RoomVo();
|
||||
roomVo.setRoomName("101教室");
|
||||
roomVo.setRoomNo("101");
|
||||
schoolVo.setRoom(roomVo);
|
||||
|
||||
String xmlStr = "<?xml version=\"1.0\" encoding=\"UTF-8\" standalone=\"yes\"?>\n" +
|
||||
"<school>\n" +
|
||||
" <school_name>西安市第一中学</school_name>\n" +
|
||||
" <school_address>西安市雁塔区长安堡一号</school_address>\n" +
|
||||
" <room>\n" +
|
||||
" <room_no>101</room_no>\n" +
|
||||
" <room_name>101教室</room_name>\n" +
|
||||
" </room>\n" +
|
||||
"</school>\n";
|
||||
Assert.assertEquals(XmlBeanUtil.convertToXml(schoolVo), xmlStr);
|
||||
}
|
||||
|
||||
|
||||
@XmlRootElement(name = "school")
|
||||
@XmlAccessorType(XmlAccessType.FIELD)
|
||||
private static final class SchoolVo {
|
||||
@XmlElement(name = "school_name", required = true)
|
||||
private String schoolName;
|
||||
@XmlElement(name = "school_address", required = true)
|
||||
private String schoolAddress;
|
||||
@XmlElement(name = "room", required = true)
|
||||
private RoomVo room;
|
||||
|
||||
@XmlTransient
|
||||
public String getSchoolName() {
|
||||
return schoolName;
|
||||
}
|
||||
|
||||
public void setSchoolName(String schoolName) {
|
||||
this.schoolName = schoolName;
|
||||
}
|
||||
|
||||
@XmlTransient
|
||||
public String getSchoolAddress() {
|
||||
return schoolAddress;
|
||||
}
|
||||
|
||||
public void setSchoolAddress(String schoolAddress) {
|
||||
this.schoolAddress = schoolAddress;
|
||||
}
|
||||
|
||||
@XmlTransient
|
||||
public RoomVo getRoom() {
|
||||
return room;
|
||||
}
|
||||
|
||||
public void setRoom(RoomVo room) {
|
||||
this.room = room;
|
||||
}
|
||||
|
||||
@XmlAccessorType(XmlAccessType.FIELD)
|
||||
public static final class RoomVo {
|
||||
@XmlElement(name = "room_no", required = true)
|
||||
private String roomNo;
|
||||
@XmlElement(name = "room_name", required = true)
|
||||
private String roomName;
|
||||
|
||||
@XmlTransient
|
||||
public String getRoomNo() {
|
||||
return roomNo;
|
||||
}
|
||||
|
||||
public void setRoomNo(String roomNo) {
|
||||
this.roomNo = roomNo;
|
||||
}
|
||||
|
||||
@XmlTransient
|
||||
public String getRoomName() {
|
||||
return roomName;
|
||||
}
|
||||
|
||||
public void setRoomName(String roomName) {
|
||||
this.roomName = roomName;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
Reference in New Issue
Block a user