1.先定义一个Java bean -- Student.java
import java.util.List;
public class Student {
private String name;
private String number;
private String gender;
private String age;
private List<Course> courses;
public static class Course {
private String name;
private String grade;
private String remark;
// Getter and Setter Methods ...
}
// Getter and Setter Methods ...
}
2.创建xsd文件生成的工具类 -- XSDCreate
import java.io.File;
import java.io.IOException;
import javax.xml.bind.JAXBContext;
import javax.xml.bind.JAXBException;
import javax.xml.bind.SchemaOutputResolver;
import javax.xml.transform.Result;
import javax.xml.transform.stream.StreamResult;
public class XSDCreate {
public CustomSchemaOutputResolver resolver;
public static void main(String[] args) {
XSDCreate xsdCreate = new XSDCreate();
xsdCreate.resolver = xsdCreate.new CustomSchemaOutputResolver("F:\\schema", "student.xsd");
Class[] classes = { Student.class };
xsdCreate.createXSD(classes);
System.out.println("all done");
}
public void createXSD(Class[] classes) {
try {
JAXBContext context = JAXBContext.newInstance(classes);
context.generateSchema(resolver);
} catch (JAXBException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
}
public class CustomSchemaOutputResolver extends SchemaOutputResolver {
private File file;
public CustomSchemaOutputResolver(String dir, String fileName) {
try {
file = new File(dir, fileName);
if (!file.exists()) {
file.createNewFile();
}
} catch (IOException e) {
e.printStackTrace();
}
}
@Override
public Result createOutput(String namespaceUri, String suggestedFileName) throws IOException {
return new StreamResult(file);
}
}
}
3. 运行XSDCreate的main方法 即可在 F:\\schema目录下生成Schema文件 --> student.xsd。
4. Window CMD 执行如下命令(JDK环境下的XJC 命令):
xjc student.xsd -d F:\schema -p com.bert.bean
执行结果如下:
正在解析模式...
正在编译模式...
com\bert\bean\Course.java
com\bert\bean\ObjectFactory.java
com\bert\bean\Student.java