实体类转换XML

package com.example.springboot09.com.test;

import com.example.springboot09.com.pojo.Student;
import org.apache.commons.lang.StringUtils;

import javax.xml.bind.JAXBContext;
import javax.xml.bind.JAXBException;
import javax.xml.bind.Marshaller;
import java.io.StringWriter;
import java.lang.reflect.Field;
import java.lang.reflect.Modifier;
import java.util.HashMap;

/**
 * @Author: Administrator
 * @Description:
 * @Date: 2019-09-05 11:08
 * @Modified By:
 */
public class Test5 {

    public static void main(String[] args) {
        HashMap<String,Object> map = new HashMap<String,Object>();
        map.put("id","410031401");
        map.put("clazz","高三十四班");
        map.put("name","周瑜");
        map.put("age",16);
        map.put("sex","男");
        map.put("height",180.81);
        map.put("weight",60.23);
        Object obj=map2Object(map, Student.class);
        String xml= convertToXml(obj,"GBK");
        System.out.println(xml);


    }

    /**
     * Map转成实体对象
     *
     * @param map   map实体对象包含属性
     * @param clazz 实体对象类型
     * @return
     */
    public static <T> T map2Object(HashMap<String, Object> map, Class<T> clazz) {
        if (map == null) {
            return null;
        }
        Object obj = null;
        try {
            obj = clazz.newInstance();

            Field[] fields = obj.getClass().getDeclaredFields();
            for (Field field : fields) {
                int mod = field.getModifiers();
                if (Modifier.isStatic(mod) || Modifier.isFinal(mod)) {
                    continue;
                }
                field.setAccessible(true);
                field.set(obj, map.get(field.getName()));
            }
        } catch (Exception e) {
            e.printStackTrace();
        }
        return (T) obj;
    }

    /**
     * 将对象直接转换成String类型的 XML输出
     */
    public static String convertToXml(Object clazz, String encoding) {
        // 创建输出流
        StringWriter sw = new StringWriter();
        try {
            // 利用jdk中自带的转换类实现
            JAXBContext context = JAXBContext.newInstance(clazz.getClass());

            Marshaller marshaller = context.createMarshaller();
            // 格式化xml输出的格式
            marshaller.setProperty(Marshaller.JAXB_FORMATTED_OUTPUT,
                    Boolean.TRUE);
            if (StringUtils.isNotBlank(encoding)) {
                marshaller.setProperty(Marshaller.JAXB_ENCODING, encoding);
            }
            // 将对象转换成输出流形式的xml
            marshaller.marshal(clazz, sw);
        } catch (JAXBException e) {
            e.printStackTrace();
        }
        return sw.toString();
    }

}

实体类

package com.example.springboot09.com.pojo;

import javax.xml.bind.annotation.*;

/**
 * @Author: Administrator
 * @Description: 学生类
 * @Date: 2019-09-04 16:58
 * @Modified By:
 */

@XmlAccessorType(XmlAccessType.FIELD)
@XmlRootElement(name = "Result")
@XmlType(name = "",propOrder = {
        "id",
        "clazz",
        "name",
        "age",
        "sex",
        "height",
        "weight"
})
public class Student {

    @XmlElement(name = "ID",required = true)
    private String id;
    @XmlElement(name = "CLAZZ",required = true)
    private String clazz;
    @XmlElement(name = "NAME",required = true)
    private String name;
    @XmlElement(name = "AGE",required = true)
    private Integer age;
    @XmlElement(name = "SEX",required = true)
    private String sex;
    @XmlElement(name = "HEIGHT",required = true)
    private double height;
    @XmlElement(name = "WEIGHT",required = true)
    private Double weight;

    public String getId() {
        return id;
    }

    public void setId(String id) {
        this.id = id;
    }

    public String getClazz() {
        return clazz;
    }

    public void setClazz(String clazz) {
        this.clazz = clazz;
    }

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    public Integer getAge() {
        return age;
    }

    public void setAge(Integer age) {
        this.age = age;
    }

    public String getSex() {
        return sex;
    }

    public void setSex(String sex) {
        this.sex = sex;
    }

    public double getHeight() {
        return height;
    }

    public void setHeight(double height) {
        this.height = height;
    }

    public Double getWeight() {
        return weight;
    }

    public void setWeight(Double weight) {
        this.weight = weight;
    }
}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值