我想要一个简单的方法从架构中生成Java类,以便我可以轻松地反序列化xml并使用这些对象进行解释。如何使用xml模式为xml反序列化生成java类?
使用Jaxb会很好,但我愿意接受任何能够完成同样任务的框架。该模式是HL7 CDA模式。这非常复杂,我猜这就是为什么我遇到问题。
我尝试使用XJC和JAXB(这将是理想的),但我得到了以下错误
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)
您是否尝试生成XSD链接? – momo