JavaBean与xml互转的方法详解

本文详细介绍了如何使用JAXB库将JavaBean对象转换为XML字符串,以及将XML字符串转换回JavaBean对象。示例包括了简单对象、包含复杂对象、集合对象(如List或Set)的转换过程,提供了具体的Java代码示例。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

/**

  • @throws JAXBException

*/

@Test

public void showMarshaller() {

Book book = new Book();

book.setId(100);

book.setAuthor(“lin”);

book.setCalendar(new Date());

book.setPrice(23.56f);

String str = JaxbUtil.converTomXml(book);

System.out.println(str);

}

/**

  • @throws JAXBException

*/

@Test

public void showUnMarshaller() {

String str = “<?xml version =\"1.0\" encoding=\"UTF-8\" standalone=\"yes\"?>” + “<book id =“100”>”

  • “lin” + “2018-9-3T11:58.006” + “<price_1>23.56</price_1>”

  • “”;

Book book = JaxbUtil.converyToJavaBean(str, Book.class);

System.out.println(book);

}

}

(3)控制台输出

3、类中包含复杂对象的转换

(1)实体类1

package com.guor.demo.beanToXml;

import javax.xml.bind.annotation.XmlAccessType;

import javax.xml.bind.annotation.XmlAccessorType;

import javax.xml.bind.annotation.XmlAttribute;

import javax.xml.bind.annotation.XmlElement;

import javax.xml.bind.annotation.XmlRootElement;

import javax.xml.bind.annotation.XmlType;

@XmlAccessorType(XmlAccessType.FIELD)

@XmlRootElement(name = “student”)

@XmlType(propOrder = {})

public class Student {

@XmlAttribute

private Integer id;

@XmlElement

private String name;

@XmlElement(name = “role”)

private Role role;

public Integer getId() {

return id;

}

public void setId(Integer id) {

this.id = id;

}

public String getName() {

return name;

}

public void setName(String name) {

this.name = name;

}

public Role getRole() {

return role;

}

public void setRole(Role role) {

this.role = role;

}

@Override

public String toString() {

return “Student [id=” + id + “, name=” + name + “, role=” + role + “]”;

}

}

(2)实体类2

package com.guor.demo.beanToXml;

import javax.xml.bind.annotation.XmlAccessType;

import javax.xml.bind.annotation.XmlAccessorType;

import javax.xml.bind.annotation.XmlElement;

import javax.xml.bind.annotation.XmlType;

@XmlAccessorType(XmlAccessType.FIELD)

@XmlType(propOrder = { “name”, “desc” })

public class Role {

@XmlElement

private String name;

@XmlElement

private String desc;

public String getName() {

return name;

}

public void setName(String name) {

this.name = name;

}

public String getDesc() {

return desc;

}

public void setDesc(String desc) {

this.desc = desc;

}

@Override

public String toString() {

return “Role [name=” + name + “,desc=” + desc + “]”;

}

}

(3)test

package com.guor.demo.beanToXml;

import org.junit.Test;

public class JaxbTest2 {

@Test

public void showMarshaller() {

Student student = new Student();

student.setId(12);

student.setName(“nihao”);

Role role = new Role();

role.setDesc(“管理”);

role.setName(“班长”);

student.setRole(role);

String str = JaxbUtil.converTomXml(student);

System.out.println(str);

}

@Test

public void showUnMarshaller() {

String str = “<?xml version =\"1.0\" encoding=\"UTF-8\" standalone=\"yes\"?>” + “<student id =“12”>”

  • “nihao” + “” + “ 管理 ” + “班长” + “” + “”;

Student student = JaxbUtil.converyToJavaBean(str, Student.class);

System.out.println(student);

}

}

(4)控制台输出

4、集合对象的转换(同样适用于Set)

(1)实体类1

package com.guor.demo.beanToXml;

import java.util.List;

import javax.xml.bind.annotation.XmlAccessType;

import javax.xml.bind.annotation.XmlAccessorType;

import javax.xml.bind.annotation.XmlElement;

import javax.xml.bind.annotation.XmlElementWrapper;

import javax.xml.bind.annotation.XmlRootElement;

import javax.xml.bind.annotation.XmlType;

@XmlAccessorType(XmlAccessType.FIELD)

@XmlRootElement(name = “country”)

@XmlType(propOrder = { “name”, “provinceList” })

public class Country {

@XmlElement(name = “country_name”)

private String name;

@XmlElementWrapper(name = “provinces”)

@XmlElement(name = “province”)

private List provinceList;

public String getName() {

return name;

}

public void setName(String name) {

this.name = name;

}

public List getProvinceList() {

return provinceList;

}

public void setProvinceList(List provinceList) {

this.provinceList = provinceList;

}

@Override

public String toString() {

return "Country [name = " + name + “,provinceList” + provinceList + “]”;

}

}

(2)实体类2

package com.guor.demo.beanToXml;

import javax.xml.bind.annotation.XmlAccessType;

import javax.xml.bind.annotation.XmlAccessorType;

import javax.xml.bind.annotation.XmlEl 《一线大厂Java面试题解析+后端开发学习笔记+最新架构讲解视频+实战项目源码讲义》无偿开源 威信搜索公众号【编程进阶路】 ement;

import javax.xml.bind.annotation.XmlType;

@XmlAccessorType(XmlAccessType.FIELD)

@XmlType(propOrder = { “name”, “provCity” })

public class Province {

@XmlElement(name = “province_name”)

private String name;

@XmlElement(name = “prov_city”)

private String provCity;

public String getName() {

return name;

}

public void setName(String name) {

this.name = name;

}

public String getProvCity() {

return provCity;

}

public void setProvCity(String provCity) {

this.provCity = provCity;

}

@Override

public String toString() {

return “Province [name=” + name + “, provCity=” + provCity + “]”;

}

}

(3)test

package com.guor.demo.beanToXml;

import java.util.List;

import java.util.ArrayList;

import org.junit.Test;

public class JaxbTest3 {

@Test

public void showShaller() {

Country country = new Country();

country.setName(“中国”);

List list = new ArrayList();

Province province = new Province();

province.setName(“辽宁省”);

province.setProvCity(“大连市”);

Province province2 = new Province();

province2.setName(“黑龙江省”);

province2.setProvCity(“哈尔滨市”);

list.add(province);

list.add(province2);

country.setProvinceList(list);

String str = JaxbUtil.converTomXml(country);

System.out.println(str);

}

@Test

public void showUnShaller() {

String str = “<?xml version =\"1.0\" encoding=\"UTF-8\" standalone=\"yes\"?>” + “”

  • “<country_name>中国</country_name>” + “” + “”

  • “<province_name>辽宁省</province_name>” + “<prov_city>大连市</prov_city>” + “” + “”

  • “<province_name>黑龙江省</province_name>” + “<prov_city>哈尔滨市</prov_city>” + “” + “”

  • “”;

Country country = JaxbUtil.converyToJavaBean(str, Country.class);

System.out.println(country);

}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值