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属性。

results matching ""

    No results matching ""