Est-il possible d'utiliser le shemagen ant Task pour générer un schéma xsd à partir de fichiers de classe au lieu de source?Génération de schéma XML à partir de fichiers de classe JAXB dans Ant
3
A
Répondre
2
Vous pourriez probablement écrire quelque chose assez facilement, puis appeler 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;
}
}
}
Dans votre chemin de contexte vous auriez besoin d'un fichier jaxb.index avec une liste des classes à inclure dans votre JAXBContext. Ou vous pouvez passer les noms de classes à la classe SchemaGenerator et les charger via un ClassLoader.