java 自带 xml_使用JDK自带工具将类转换为xml

一、使用情景

某些时候,我们需要将类转换为xml字符串或者文件进行发送或操作,jdk本身便提供了这样的工具。JAXBContext。

二、使用

代码中注释的很清楚了,就不解释了。主要有两个类:PersonBO是要转换的载体类。Main是测试类。

PersonBOpackage com.example.demo;

import javax.xml.bind.annotation.*;

import java.util.List;

//定义将属性还是get/set映射到xml文件中。如果没有的话会报错,因为默认会既处理属性也处理get/set,会报错提示出现两遍。

@XmlAccessorType(value = XmlAccessType.FIELD)

//xml的root节点的名称

@XmlRootElement(name = "person")

//指定属性在xml文件中的顺序

@XmlType(propOrder = {

"id",

"realName",

"nickName",

"address",

"phoneNum",

"families"

})

public class PersonBO {

public PersonBO() {}

public PersonBO(String desc, Integer id, String realName, String nickName, String address,

String phoneNum, List families) {

this.desc = desc;

this.id = id;

this.realName = realName;

this.nickName = nickName;

this.address = address;

this.phoneNum = phoneNum;

this.families = families;

}

//根节点的属性,例如:

@XmlAttribute(name = "desc")

private String desc;

//xml中的子节点

@XmlElement(name = "real_name", required = true, defaultValue = "no_name")

private String realName;

@XmlElement(name = "id", required = true, defaultValue = "no_id")

private Integer id;

@XmlElement(name = "nick_name")

private String nickName;

@XmlElement(name = "address")

private String address;

@XmlElement(name = "phone_num", required = true)

private String phoneNum;

@XmlList

@XmlElement(name = "family_num")

private List families;

public String getDesc() {

return desc;

}

public PersonBO setDesc(String desc) {

this.desc = desc;

return this;

}

public String getRealName() {

return realName;

}

public PersonBO setRealName(String realName) {

this.realName = realName;

return this;

}

public Integer getId() {

return id;

}

public PersonBO setId(Integer id) {

this.id = id;

return this;

}

public String getNickName() {

return nickName;

}

public PersonBO setNickName(String nickName) {

this.nickName = nickName;

return this;

}

public String getAddress() {

return address;

}

public PersonBO setAddress(String address) {

this.address = address;

return this;

}

public String getPhoneNum() {

return phoneNum;

}

public PersonBO setPhoneNum(String phoneNum) {

this.phoneNum = phoneNum;

return this;

}

public List getFamilies() {

return families;

}

public PersonBO setFamilies(List families) {

this.families = families;

return this;

}

@Override

public String toString() {

return "PersonBO{" +

"id=" + id +

", realName='" + realName + '\'' +

", nickName='" + nickName + '\'' +

", address='" + address + '\'' +

", phoneNum='" + phoneNum + '\'' +

", families=" + families +

'}';

}

}

Mainpackage com.example.demo;

import javax.xml.bind.JAXBContext;

import javax.xml.bind.JAXBException;

import javax.xml.bind.Marshaller;

import java.io.*;

import java.util.List;

import java.util.stream.Collectors;

import java.util.stream.Stream;

/**

* @author kingboy--KingBoyWorld@163.com

* @date 2017/11/12 下午2:42

* @desc 转换类.

*/

public class Main {

public static void main(String[] args) {

//准备一个实体数据

List families = Stream.of("father", "mother", "sister").collect(Collectors.toList());

PersonBO personBO = new PersonBO("人", 1, "小金", "kingboy",

"北京", "13288888888", families);

//转换

String xml = beanToXml(personBO);

System.out.println(xml);

}

/**

* bean转换为xml,如果转换失败,返回空字符串

* @param object

* @return

*/

public static String beanToXml(Object object) {

try {

//创建操作类

JAXBContext jax = JAXBContext.newInstance(object.getClass());

Marshaller marshaller = jax.createMarshaller();

//解析

StringWriter sw = new StringWriter();

//格式化

marshaller.setProperty(Marshaller.JAXB_FORMATTED_OUTPUT, true);

marshaller.marshal(object, sw);

return sw.toString();

} catch (JAXBException e) {

e.printStackTrace();

}

return "";

}

}

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值