Использование JAXB для загрузки FpML 5.7 с использованием Maven

Я изо всех сил пытался сгенерировать Java-файлы из FpML 5.7 рекомендации по ведению записей. Любая помощь ценится.

Я следовал за http://www.stephennimmo.com/generate-java-objects-for-fpml-using-jaxb-and-maven-the-easy-way/ и FpML 5.3 JAXB Bindings и все еще получаю следующую ошибку.

  • Вы получаете это универсальное свойство по следующей причине:
    • Имя поля "NotionalSchedule" используется двумя разными частями схемы. Увидеть:
    • строка 69 файла:/C:/Projects/TestFpML/src/main/xsd/xml_recordkeeping/fpml-ird-5-7.xsd
    • строка 53 файла:/C:/Projects/TestFpML/src/main/xsd/xml_recordkeeping/fpml-ird-5-7.xsd

Вот мой bindings.xjb

<?xml version="1.0" encoding="UTF-8"?>
<jxb:bindings 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"
            xs:schemaLocation="http://java.sun.com/xml/ns/jaxb http://java.sun.com/xml/ns/jaxb/bindingschema_2_0.xsd" 
            version="2.1" 
            jxb:extensionBindingPrefixes="xjc">
    <jxb:globalBindings>
        <jxb:serializable uid="54"/>
    </jxb:globalBindings>
</jxb:bindings>

А вот и мой maven pom.xml.

<plugin>

    <groupId>org.codehaus.mojo</groupId>
    <artifactId>jaxb2-maven-plugin</artifactId>
    <version>1.5</version>              
    <executions>
        <execution>
            <id>xml_recordkeeping-xjc</id>                      
            <goals>
                <goal>xjc</goal>
            </goals>
            <configuration>                                 
                <schemaDirectory>${project.basedir}/src/main/xsd/xml_recordkeeping</schemaDirectory>
                <bindingDirectory>${project.basedir}/src/main/xjb</bindingDirectory>
                <bindingFiles>bindings.xjb</bindingFiles>
                <schemaFiles>fpml-main-5-7.xsd</schemaFiles>
                <packageName>org.fpml.recordkeeping</packageName>
                <staleFile>${project.build.directory}/jaxb2/.recordkeepingXjcStaleFlag</staleFile>
                <extension>true</extension>
            </configuration>
        </execution>
    </executions>
    <configuration>
        <outputDirectory>${project.basedir}/src/main/java</outputDirectory>                 
    </configuration>
</plugin>

Я тоже пытался добавить <xjc:simple /> до привязки, но это не помогает. Я понимаю, что в файле xsd с веб-сайта FpML есть повторяющееся определение объекта, но как я могу расширить привязки, чтобы сохранить подлинность xsd? Поскольку этот файл является рыночным стандартом, я не хочу менять xsd.

Спасибо за вашу помощь.

1 ответ

Добавлены следующие строки в bindings.xjb для переопределения имен. Сделал трюк.

<jxb:bindings schemaLocation="../xsd/xml_recordkeeping/fpml-ird-5-7.xsd">
    <jxb:bindings node="//xs:complexType[@name='Calculation']/xs:sequence/xs:choice/xs:element[@name='notionalSchedule']">
        <jxb:property name="notionalScheduleOld"/>
    </jxb:bindings>
</jxb:bindings>

Спасибо lexicore!

Другие вопросы по тегам