java和xml的互相转换,依靠强大的JAXBContext可以轻松实现。
下面通过一个简单案例学习一下JAXBContext
首先准备好一个JavaBean供实验:
注意
1、类文件注解:@XmlRootElement不可缺少
2、2个Student的构造方法不能少
@XmlRootElement
public class Student {
private String name;
private String width;
private String height;
private int age;
public Student(String name, String width, String height, int age) {
super();
this.name = name;
this.width = width;
this.height = height;
this.age = age;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getWidth() {
return width;
}
public void setWidth(String width) {
this.width = width;
}
public String getHeight() {
return height;
}
public void setHeight(String height) {
this.height = height;
}
public int getAge() {
return age;
}
public void setAge(int age) {
this.age = age;
}
public Student() {
super();
}
}
JavaToXml:
@Test
public void test01(){
try {
JAXBContext jc = JAXBContext.newInstance(Student.class);
Marshaller ms = jc.createMarshaller();
Student st = new Student("zhang", "w", "h", 11);
ms.marshal(st, System.out);
} catch (JAXBException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
XmlToJava
//xml转换Java
@Test
public void test02() throws JAXBException{
String xml = "<?xml version=\"1.0\" encoding=\"UTF-8\" standalone=\"yes\"?><student><age>11</age><height>h</height><name>zhang</name><width>w</width></student>";
JAXBContext jc = JAXBContext.newInstance(Student.class);
Unmarshaller unmar = jc.createUnmarshaller();
Student stu = (Student) unmar.unmarshal(new StringReader(xml));
System.out.println(stu.getName());
}