1. XML工具类
1.1. 简要描述
此工具类提供XML和实体类的相互转换
1.2. 示例
/src/test/java/com.helioscloud.middleware.util.XmlUtilTest
文件下载:XmlUtilTest
1.3. 实体Bean转换为XML
1.3.1. 方法签名
String convertToXml(Object obj,String header)
1.3.2. 输入
参数名 | 参数类型 | 描述 |
---|---|---|
obj | Object | 具体的实体对象Bean |
header | String | 生成xml的头信息 |
1.3.3. 输出
参数名 | 参数类型 | 描述 |
---|---|---|
String | 生成的xml内容字符串 |
1.4. Xml文件转换为实体Bean
1.4.1. 方法签名
void convertToXml(Object obj, String header,String path)
1.4.2. 输入
参数名 | 参数类型 | 描述 |
---|---|---|
obj | Object | 具体的实体对象Bean |
header | String | 生成xml的头信息 |
path | String | 生成的xml文件路径 |
1.4.3. 输出
参数名 | 参数类型 | 描述 |
---|---|---|
void | 无返回,可在路径下查看文件是否创建 |
1.5. 转换xml字符串为实体Bean
1.5.1. 方法签名
Object convertXmlStrToObject(Class clazz, String xmlStr)
1.5.2. 输入
参数名 | 参数类型 | 描述 |
---|---|---|
clazz | Class | 实体Bean<泛型>的class,举例:Test.class |
xmlStr | String | xml字符串内容 |
1.5.3. 输出
参数名 | 参数类型 | 描述 |
---|---|---|
Object | 实体Bean对象 |
1.6. 转换xml文件为实体Bean
1.6.1. 方法签名
Object convertXmlFileToObject(Class clazz, String xmlPath)
1.6.2. 输入
参数名 | 参数类型 | 描述 |
---|---|---|
clazz | Class | 实体Bean<泛型>的class,举例:Test.class |
xmlPath | String | xml文件路径 |
1.6.3. 输出
参数名 | 参数类型 | 描述 |
---|---|---|
Object | 实体Bean对象 |
1.7. 实体类注解说明
/**
* Created by Transy on 2019-1-3.
*/
@XmlAccessorType(XmlAccessType.FIELD)
// XML文件中的根标识
//@XmlRootElement(name = "User")
@XmlRootElement(name = "User",namespace = "http://www.huilianyi.com")
// 控制JAXB 绑定类中属性和字段的排序
@XmlType(propOrder = {
"userId",
"userName",
"password",
"birthday",
"money",
"computers"
})
//@XmlAccessorOrder(XmlAccessOrder.ALPHABETICAL)
@ToString
@Data
public class User implements Serializable {
private static final long serialVersionUID = 1L;
// 用户Id
@XmlTransient
private int userId;
// 用户名
// @XmlAttribute(name = "name")
private String userName;
// 用户密码
// @XmlElement(name = "pass" ,namespace = "http://api.huilianyi.com")
private String password;
// 用户生日
@XmlJavaTypeAdapter(JaxbDateSerializer.class)
private Date birthday;
// 用户钱包
private double money;
// 拥有的电脑
@XmlElement(namespace="http://stage.huilianyi.com")
private List<Computer> computers;
//手机号码
@XmlElementWrapper(name = "phones")
@XmlElement(name = "phone")
private String[] phones;
@XmlElementWrapper(name = "addressList")
private List<String> address;
@XmlElement(name = "mobiles")
private List<Mobile> mobileList;
public User() {
super();
}
}
@XmlAccessorType(XmlAccessType.FIELD)
@XmlRootElement(name = "Computer")
@XmlType(propOrder = { "serialNumber", "brandName", "productDate", "price" })
@Data
public class Computer implements Serializable {
private static final long serialVersionUID = 1L;
// 序列号
private String serialNumber;
// 品牌名
private String brandName;
// 生成日期
private Date productDate;
// 价格
private double price;
public Computer() {
super();
}
public Computer(String serialNumber, String brandName, Date productDate,
double price) {
super();
this.serialNumber = serialNumber;
this.brandName = brandName;
this.productDate = productDate;
this.price = price;
}
}
@XmlAccessorType(XmlAccessType.FIELD)--必须:控制字段或属性的序列化。FIELD表示JAXB将自动绑定Java类中的每个非静态的(static)、非瞬态的(由@XmlTransient标注)字段到XML。其他值还有XmlAccessType.PROPERTY和XmlAccessType.NONE。
@XmlType,将Java类或枚举类型映射到XML模式类型,propOrder:指定顺序,如指定,则需包含所有需要xml出现的字段
@XmlAccessorOrder,控制绑定类中属性和字段的排序。
@XmlJavaTypeAdapter,使用定制的适配器(即扩展抽象类XmlAdapter并覆盖marshal()和unmarshal()方法),以序列化Java类为XML。
@XmlElementWrapper ,对于数组或集合(即包含多个元素的成员变量),生成一个包装该数组或集合的XML元素(称为包装器)。
@XmlRootElement--必须,将Java类或枚举类型映射到XML元素。
@XmlElement,将Java类的一个属性映射到与属性同名的一个XML元素。
@XmlAttribute,将Java类的一个属性映射到与属性同名的一个XML属性。