I'd like an easy way to generate Java classes from a schema so that I can easily deserialize xml and interpret using the objects.
Using Jaxb would be great, but I'm open to any framework that will accomplish the same thing. The schema is the HL7 CDA Schema. It's very complex and I'm guessing that's why I'm having problems with it.
I tried using xjc and JAXB (this would be ideal) but I get an the following error
xjc -d ~/code/ccd/java -p net.msdelta.cda -xmlschema -verbose CDA.xsd
parsing a schema...
compiling a schema...
[INFO] generating code
unknown location
Exception in thread "main" java.lang.IllegalArgumentException: trying to create the same field twice: id
at com.sun.codemodel.internal.JDefinedClass.field(JDefinedClass.java:408)
at com.sun.codemodel.internal.JDefinedClass.field(JDefinedClass.java:379)
at com.sun.tools.internal.xjc.generator.bean.field.AbstractFieldWithVar.createField(AbstractFieldWithVar.java:61)
at com.sun.tools.internal.xjc.generator.bean.field.SingleField.<init>(SingleField.java:78)
at com.sun.tools.internal.xjc.generator.bean.field.SingleField.<init>(SingleField.java:65)
at sun.reflect.GeneratedConstructorAccessor8.newInstance(Unknown Source)
at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:27)
at java.lang.reflect.Constructor.newInstance(Constructor.java:513)
at com.sun.tools.internal.xjc.generator.bean.field.GenericFieldRenderer.generate(GenericFieldRenderer.java:53)
at com.sun.tools.internal.xjc.generator.bean.field.DefaultFieldRenderer.generate(DefaultFieldRenderer.java:68)
at com.sun.tools.internal.xjc.generator.bean.BeanGenerator.generateFieldDecl(BeanGenerator.java:736)
at com.sun.tools.internal.xjc.generator.bean.BeanGenerator.generateClassBody(BeanGenerator.java:524)
at com.sun.tools.internal.xjc.generator.bean.BeanGenerator.<init>(BeanGenerator.java:224)
at com.sun.tools.internal.xjc.generator.bean.BeanGenerator.generate(BeanGenerator.java:164)
at com.sun.tools.internal.xjc.model.Model.generateCode(Model.java:275)
at com.sun.tools.internal.xjc.Driver.run(Driver.java:332)
at com.sun.tools.internal.xjc.Driver.run(Driver.java:180)
at com.sun.tools.internal.xjc.Driver._main(Driver.java:105)
at com.sun.tools.internal.xjc.Driver.access$000(Driver.java:63)
at com.sun.tools.internal.xjc.Driver$1.run(Driver.java:85)