是否可以使用 shemagen ant Task从类文件而不是源代码生成 xsd 架构?
最佳答案
您可能可以相当轻松地编写一些东西,然后从 Ant 中调用它:
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 加载它们。
关于java - 在 Ant 中从 JAXB 类文件生成 XML 模式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3328831/