1. Schema文件:
<?xml version="1.0" encoding="UTF-8"?>
<schema xmlns="http://www.w3.org/2001/XMLSchema" xmlns:tns="http://www.liulutu.com/students/" targetNamespace="http://www.liulutu.com/students/">
<element name="students">
<complexType>
<sequence>
<element name="student" type="tns:StudentType" maxOccurs="unbounded" />
</sequence>
</complexType>
</element>
<simpleType name="SexType">
<restriction base="string">
<enumeration value="Male" />
<enumeration value="Female" />
</restriction>
</simpleType>
<complexType name="StudentType">
<attribute name="sex" type="tns:SexType" />
<attribute name="name" type="string" />
</complexType>
</schema>
2. 生成Model类:
- Eclipse开发环境中,右键选中Schema文件 --> Generate --> JAXB Classes
- 生成的JAXB Model Classes 如下:
package demo;
import javax.xml.bind.JAXBContext;
import javax.xml.bind.JAXBException;
import javax.xml.bind.Marshaller;
import demo.model.ObjectFactory;
import demo.model.SexType;
import demo.model.StudentType;
import demo.model.Students;
public class JaxbDemo {
private static void addStudent(ObjectFactory factory, Students students, String name, SexType type) {
StudentType studentType = factory.createStudentType();
studentType.setName(name);
studentType.setSex(type);
students.getStudent().add(studentType);
}
public static void main(String[] args) throws JAXBException {
ObjectFactory factory = new ObjectFactory();
Students students = factory.createStudents();
JaxbDemo.addStudent(factory, students, "Jim", SexType.MALE);
JaxbDemo.addStudent(factory, students, "Merry", SexType.FEMALE);
JAXBContext jaxbContext = JAXBContext.newInstance("demo.model");
Marshaller marshaller = jaxbContext.createMarshaller();
marshaller.setProperty(Marshaller.JAXB_FORMATTED_OUTPUT, true);
marshaller.marshal(students, System.out);
}
}
4. 结果输出:
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<ns2:students xmlns:ns2="http://www.liulutu.com/students/">
<student sex="Male" name="Jim"/>
<student sex="Female" name="Merry"/>
</ns2:students>