因此,我可以使用JAXB参考实现来使整个工作正常进行。诀窍是要意识到从JAXB站点 下载 是一个
下载器, 而 不是 实际的库!双击接受许可,库将在本地下载。创建一个测试文件夹(
JAXB_TEST),并将所有下载的
.jars
复制到一个
lib子文件夹。我将所有XSD放在
XSD子文件夹中。之后,我运行了以下Ant
build.xml文件。
<?xml version="1.0"?><project name="jaxb_test" basedir="." default="package" > <taskdef name="xjc" classname="com.sun.tools.xjc.XJCTask"> <classpath> <fileset dir="./lib" includes="*.jar" /> </classpath> </taskdef> <target name="generate"> <delete dir="./gen-src" /> <mkdir dir="./gen-src" /> <xjc destdir="./gen-src" language="XMLSCHEMA" package="com.mmm" > <schema dir="./xsd" includes="EPC*.xsd" /> </xjc> </target> <target name="compile" depends="generate" > <delete dir="./bin" /> <mkdir dir="./bin" /> <javac srcdir="./gen-src" destdir="./bin" includeantruntime="false" /> </target> <target name="package" depends="compile" > <delete dir="./dist" /> <mkdir dir="./dist" /> <jar destfile="./dist/jaxb-gen.jar" basedir="./bin" /> </target></project>
我唯一的问题是我有一个带根标签的xsd,该根标签称为
<product>匿名扩展了
Product类型,以添加一个
version属性(我一直希望在根标签上拥有该属性),这会导致JAXB发生名称冲突。因此,我改为将匿名类型转换为命名类型(即
TopLevelProduct),并将根设置为该类型,JAXB对此感到满意。



