Есть ли способ создания классов Java из файлов MS-Dataset XSD? - PullRequest
1 голос
/ 14 января 2009

Учитывая XSD-файл Dataset, возможно ли генерировать Java-классы, которые не используют System.Data? Я попытался запустить тест с использованием инструмента JAXB XJC, но он не дает ничего особенно полезного.

Обновление: я попробовал также XmlBeans, следуя предложению Фернандо, и он генерирует нечто похожее на вывод XJC - то есть представления классов таблиц, но без каких-либо столбцов, ограничений или строк. Я могу добавить эти вещи в фасад, но в идеале они должны генерироваться любым компилятором XSD.

1 Ответ

1 голос
/ 14 января 2009

Вы можете попробовать XMLBeans вместо JAXB API. Вы можете вызвать его с помощью командной строки или просто использовать скрипт ANT. Я прошёл часть файла build.xml, который вызывает XMLBeans для компиляции XSD в файл jar.

<taskdef name="xmlbean" classname="org.apache.xmlbeans.impl.tool.XMLBean" classpathref="classpath"/>


<!-- ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ -->
<!--  Crea y compila las clases del modelo                             -->
<!-- ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ -->

<target name="build" description="--> crea las clases a partir del schema">
    <!-- Borra los fuentes del modelo -->
    <delete quiet="true" dir="${build.dir}/src" />

    <mkdir dir="${build.classes}"/>

    <!-- Construye fuentes asociadas y crea las clases -->
    <xmlbean srcgendir="${build.dir}/src" classpathref="classpath" classgendir="${build.classes}">
        <fileset dir="${src.dir}" excludes="**/*.xsd"/>
        <fileset dir="${schemas.dir}" includes="**/*.*"/>
    </xmlbean>

    <javac srcdir="${src.dir}" 
                destdir="${build.classes}" 
                encoding="Windows-1252" 
                debug="${debug}" 
                debuglevel="${debuglevel}" 
                deprecation="${deprecation}" 
                verbose="${verbose}" 
                optimize="${optimize}" 
                source="${source}" 
                target="${target}">
                <classpath refid="classpath" />
    </javac>
</target>
...