3
shemagen ant Task을 사용하여 소스가 아닌 클래스 파일에서 xsd 스키마를 생성 할 수 있습니까?Ant의 JAXB 클래스 파일에서 XML 스키마 생성
shemagen ant Task을 사용하여 소스가 아닌 클래스 파일에서 xsd 스키마를 생성 할 수 있습니까?Ant의 JAXB 클래스 파일에서 XML 스키마 생성
당신은 아마 매우 쉽게 뭔가를 작성하고 개미에서 그것을 호출 할 수 있습니다
import java.io.File;
import java.io.IOException;
import javax.xml.bind.JAXBContext;
import javax.xml.bind.SchemaOutputResolver;
import javax.xml.transform.Result;
import javax.xml.transform.stream.StreamResult;
public class SchemaGenerator {
public static void main(String[] args) throws Exception {
String contextPath = args[0];
String outputDir = args[1];
JAXBContext jc = JAXBContext.newInstance(contextPath);
jc.generateSchema(new MySchemaOutputResolver(schemaFileName));
}
private static class MySchemaOutputResolver extends SchemaOutputResolver {
private String outputDir;
public MySchemaOutputResolver(String outputDir) {
this.outputDir = outputDir;
}
public Result createOutput(String namespaceURI, String suggestedFileName) throws IOException {
File file = new File(outputDir + "/" + suggestedFileName);
StreamResult result = new StreamResult(file);
result.setSystemId(file.toURI().toURL().toString());
return result;
}
}
}
당신의 컨텍스트 경로에서 당신이 JAXBContext에 포함되는 클래스의 목록이있는 jaxb.index 파일이 필요합니다. 또는 클래스 이름을 SchemaGenerator 클래스에 전달하고 ClassLoader를 통해 클래스 이름을로드 할 수 있습니다.