【Java Bean】实体类与XML之间的互相转换

最近有个需求,需要把 bean对象 转成 xml 文件,然后 xml 文件 转成对象 ( 生成 与 解析 ),废话不多说,直接上代码

1. 相关注解详解

// 1. 定义xml中的根属性
@XmlRootElement(name="student")    

// 2. 需要解析什么访问权限的javaBean字段 == 如果是私有字段,类上必须加上此注解
@XmlAccessorType(XmlAccessType.FIELD) 

// 3. 使用什么标签名包裹该类的全部属性
@XmlRootElement(name="student") 

// 4. 该类的属性字段的值需要什么标签进行包裹
@XmlElement(name="name",required = true)

// 5. 属性字段是容器对象如Collection,需要什么标签包裹该字段遍历的元素
@XmlElementWrapper(name = "students")
@XmlElement(name="name")  // 遍历的每个JavaBean的属性值由该 定义的标签进行包裹

// 6. 可以迭代容器字段
@XmlAnyElement

// 7. 定义属性字段序列化、反序列化的顺序
@XmlType(propOrder = {"id", "name"})

2. 使用

@Data
@XmlRootElement(name="root")    //定义xml中的根属性
@XmlAccessorType(XmlAccessType.FIELD)   //定义xml序列化的字段类型
public class School {
    
    //xml属性映射
    @XmlElement(name="名称",required = true)
    private String name;

    @XmlElement(name="数量",required = true)
    private Integer count;

}

3. 实现从Bean到xml的转换

 public static String beanToXml(School bean) throws JAXBException {
        
 try(ByteArrayOutputStream out = new ByteArrayOutputStream()){

         //实参中包含需要解析的类
        JAXBContext content = JAXBContext.newInstance(bean);
         //javaBean序列化xml文件器
        Marshaller marshaller = content.createMarshaller();
         //编码
        marshaller.setProperty(Marshaller.JAXB_ENCODING,ENCODING);
         // 去头
        marshaller.setProperty(Marshaller.JAXB_FARGMENT,true);
        marshaller.marshal(bean, out); 
        return out.toString("GBK");
}catch(Exception e){
    logger.info("",e);
}

4. 实现从xml到Bean的转换

public static <T> T xmlToJava(String xmlStr,Class<T> tClass) throws Exception{

    try(StringReader sr = new StringReader(xmlStr)){
        
        return (T) JAXBContext.newInstance(tClass).createUnmarshaller().unmarshal(sr);
    }
}

  • 2
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值