سؤال

لدي هذه المهمة "المهمة" لتوليد فصول Java من ملف XSD باستخدام Jaxb.

        <!-- XML to Java classes -->
        <plugin>
            <groupId>com.sun.tools.xjc.maven2</groupId>
            <artifactId>maven-jaxb-plugin</artifactId>
            <executions>
                <execution>
                    <phase>generate-sources</phase>
                    <goals>
                        <goal>generate</goal>
                    </goals>
                </execution>
            </executions>
            <configuration>
                <generatePackage>nl.compay.service</generatePackage>
                <schemaDirectory>src/main/webapp/compay</schemaDirectory>
            </configuration>
        </plugin>

بالنسبة لنوع XSD "مستخدم"، فإنه يولد فئة مسماة "مستخدم" (DUH). ومع ذلك، لدي أيضا فئة كيان JPA المسمى "User" (على الرغم من وجود حزمة مختلفة). هل يمكنني تغيير تكوين XML أعلاه للسماح Jaxb بادئة الفئات التي تم إنشاؤها مع شيء مثل "XML"؟

هل كانت مفيدة؟

المحلول

هذا هو شرط شائع. يمكنك القيام بذلك عن طريق توفير ملف ربط Jaxb إضافي لتخصيص كيفية ترجمة Jaxb أسماء نوع المخطط إلى أسماء فئة Java.

تنتهي هذه الملفات عادة في التمديد ".xjb". تحتاج إلى إنشاء واحدة لمخططك، على سبيل المثال:

<jxb:bindings version="1.0" 
  xmlns:jxb="http://java.sun.com/xml/ns/jaxb" 
  xmlns:xs="http://www.w3.org/2001/XMLSchema" 
  xmlns:xjc="http://java.sun.com/xml/ns/jaxb/xjc" 
  jxb:extensionBindingPrefixes="xjc">

    <jxb:bindings schemaLocation="nl.company.service.xsd" node="/xs:schema">
        <jxb:schemaBindings>
            <jxb:nameXmlTransform>
                <jxb:typeName prefix="XML"/>
                <jxb:anonymousTypeName prefix="XML"/>
            </jxb:nameXmlTransform>
        </jxb:schemaBindings>
    </jxb:bindings>

</jxb:bindings>

بعد أن قمت بذلك، قم بإسقاط ملف XJB في مكان ما في دليل الإنشاء الخاص بك وإخبار Maven للاستفادة منه أثناء الترجمة:

<includeBindings>
    <includeBinding>mybindings.xjb</includeBinding>
</includeBindings>

وهنا تلميح على الطريق: إذا كنت في مسار يحتوي على مسافات تحتوي على مسافات (مثل "المستندات والإعدادات Project Project") ثم سيقع Jaxb مع أخطاء غريبة.

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top