[英]How to use JAXB APIs to generate classes from xsd?
我需要不使用xjc命令或ant从.xsd生成bean类。 我已经在Apache Axis2中找到了实现,但是我无法生成工件。
我已经编写了以下代码,但得到了NullPointerException:
SchemaCompiler sc = XJC.createSchemaCompiler();
URL url = new URL("file://E:\\JAXB\\books.xsd");
sc.parseSchema(new InputSource(url.toExternalForm()));
S2JJAXBModel model = sc.bind();
JCodeModel cm = model.generateCode(null, null);
cm.build(new FileCodeWriter(new File("E:\\JAXBTest")));
谁能帮我/提供一些链接???
虽然我没有尝试过Axis2的XJC,但我尝试了Sun的XJC,但是我很确定该模式的URL是错误的:您需要三个斜杠(因为“ authority”部分被省略了,因为它是具有绝对路径的本地资源)
或者,甚至更简单地,构造一个File并在其上调用toURI(),如下所示:
SchemaCompiler sc = XJC.createSchemaCompiler();
File file = new File("D:\\my-dir\\my-schema.xsd");
sc.setErrorListener(... );
sc.parseSchema(new InputSource(file.toURI().toString()));
S2JJAXBModel model = sc.bind();
JCodeModel cm = model.generateCode(null, null);
cm.build(new File("."));
这为我生成了所需的文件。 您需要在类路径上使用tools.jar。 代码生成愉快!
SchemaCompiler sc = XJC.createSchemaCompiler();
File file = null;
file = new File("Item.xsd");
sc.parseSchema(new InputSource(file.toURI().toString()));
S2JJAXBModel model = sc.bind();
JCodeModel cm = model.generateCode(null, null);
cm.build(new File("."));
//我在本地目录中有Item.xsd,此代码已生成类。 如果我在本地删除此xsd,将获得空指针异常。 还要注意,我在eclipse项目的Java Build路径中有与jaxb相关的jar。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.