Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Is it possible to generate a XSD from a JAXB-annotated class?

Tags:

java

jaxb

xsd

I've written a number of classes using JAXB for serialization and I was wondering if there was a way to generate a XSD file for each of these objects based on the annotations. Is there a tool for this?

Something like generate-xsd com/my/package/model/Unit.java would be awesome. Does anything exist to do this?

like image 371
Naftuli Kay Avatar asked Aug 27 '11 01:08

Naftuli Kay


1 Answers

Yes, you can use the generateSchema method on JAXBContext:

JAXBContext jaxbContext = JAXBContext.newInstance(Customer.class); SchemaOutputResolver sor = new MySchemaOutputResolver(); jaxbContext.generateSchema(sor); 

You leverage an implementation of SchemaOutputResolver to control where the output goes:

public class MySchemaOutputResolver extends SchemaOutputResolver {      public Result createOutput(String namespaceURI, String suggestedFileName) throws IOException {         File file = new File(suggestedFileName);         StreamResult result = new StreamResult(file);         result.setSystemId(file.toURI().toURL().toString());         return result;     }  } 
like image 65
bdoughan Avatar answered Sep 19 '22 08:09

bdoughan