java与XML互转

                                                          javaXML互转

 

1. 创建一个对象用来转换为XML(可以是一个复杂对象即对象中含有对象)

需要在主对象前加上注解@XmlRootElement,否则会报错

项目编码需使用UTF-8,都则中文乱码

对象中需要有构造器(有参、无参)

主对象:

import javax.xml.bind.annotation.XmlRootElement;

 

@XmlRootElement  //注解必须加上

public class Student {

private int id;

private String name;

private String sex;

private int age;

private Classroom classroom;

 

public Student() {

super();

}

public Student(String name, String sex, int age, Classroom classroom) {

super();

this.name = name;

this.sex = sex;

this.age = age;

this.classroom = classroom;

}

 

public String getName() {

return name;

}

public void setName(String name) {

this.name = name;

}

public String getSex() {

return sex;

}

public void setSex(String sex) {

this.sex = sex;

}

public int getAge() {

return age;

}

public void setAge(int age) {

this.age = age;

}

public Classroom getClassroom() {

return classroom;

}

public void setClassroom(Classroom classroom) {

this.classroom = classroom;

}

 

}

 

从对象:

public class Classroom {

private String great;

private String year;

private String diaplay;

 

public Classroom() {

super();

// TODO Auto-generated constructor stub

}

public Classroom(String great, String year, String diaplay) {

super();

this.great = great;

this.year = year;

this.diaplay = diaplay;

}

public String getGreat() {

return great;

}

public void setGreat(String great) {

this.great = great;

}

public String getYear() {

return year;

}

public void setYear(String year) {

this.year = year;

}

 

public String getDiaplay() {

return diaplay;

}

public void setDiaplay(String diaplay) {

this.diaplay = diaplay;

}

}

2. 测试类

import java.io.StringReader;

 

import javax.xml.bind.JAXBContext;

import javax.xml.bind.JAXBException;

import javax.xml.bind.Marshaller;

import javax.xml.bind.Unmarshaller;

 

import com.dolo.domain.Classroom;

import com.dolo.domain.Student;

 

public class Test {

 

@org.junit.Test

public void test01(){

try {

JAXBContext jaxb = JAXBContext.newInstance(Student.class);

Marshaller mar = jaxb.createMarshaller();//创建Marshaller编译

Student student = new Student("dolo","张三",24,new Classroom("2014-02","2014","计算机系"));

//marshal方法参数(Obj,文件或输出流)

mar.marshal(student, System.out);

//得到结果为:

String xml = "<?xml version=\"1.0\" encoding=\"UTF-8\" standalone=\"yes\"?><student><age>24</age><classroom><diaplay>计算机系</diaplay><great>2014-02</great><year>2014</year></classroom><name>dolo</name><sex>张三</sex></student>";

} catch (JAXBException e) {

// TODO Auto-generated catch block

e.printStackTrace();

}

 

@org.junit.Test

public void test02(){

String xml = "<?xml version=\"1.0\" encoding=\"UTF-8\" standalone=\"yes\"?><student><age>24</age><classroom><diaplay>计算机系</diaplay><great>2014-02</great><year>2014</year></classroom><name>dolo</name><sex>张三</sex></student>";

try {

JAXBContext jaxb = JAXBContext.newInstance(Student.class);

Unmarshaller ummar = jaxb.createUnmarshaller();//创建Marshaller反编译

//unmarshal方法参数(输入流)

Student student = (Student)ummar.unmarshal(new StringReader(xml));

System.out.println(student.getName()+"--"+student.getClassroom().getDiaplay());

} catch (JAXBException e) {

// TODO Auto-generated catch block

e.printStackTrace();

}

}

}

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值