关于JAXB的细节原理参考
http://blog.csdn.net/xjtuse_mal/article/details/6930538
自己实现测试了一下
两个xml文件内容
student.xml
<?xml version="1.0" encoding="UTF-8"?>
<student>
<name>student</name>
</student>
teacher.xml
<?xml version="1.0" encoding="UTF-8"?>
<teacher>
<name>teacher</name>
</teacher>
相应的两个java类
Student.java
import javax.xml.bind.annotation.XmlRootElement;
import com.sun.xml.internal.txw2.annotation.XmlElement;
@XmlRootElement
public class Student {
private String name;
@XmlElement
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
}
Teacher.java
import javax.xml.bind.annotation.XmlElement;
import javax.xml.bind.annotation.XmlRootElement;
@XmlRootElement
public class Teacher {
private String name;
@XmlElement
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
}
import javax.xml.bind.annotation.XmlRegistry;
// 必须的
@XmlRegistry
public class ObjectFactory {
public ObjectFactory() {
}
public Student createStudent() {
return new Student();
}
public Teacher createTeacher() {
return new Teacher();
}
}
测试类
public class JAXBTest {
public static void main(String[] args) throws Exception {
JAXBContext context = JAXBContext.newInstance(JAXBTest.class.getPackage().getName());
Unmarshaller unmarshaller = context.createUnmarshaller();
Student newStudent = (Student) unmarshaller.unmarshal(new File(
"students.xml"));
System.out.println(newStudent.getName());
Teacher teacher = (Teacher) unmarshaller.unmarshal(new File("teacher.xml"));
System.out.println(teacher.getName());
}
}
测试结果
student
teacher