2015-06-26 62 views
0

我一直在努力從FpML 5.7記錄保存建議中生成java文件。任何幫助appriciated。使用JAXB加載FpML 5.7使用Maven

我跟着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:/項目/ 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 />綁定,但它沒有幫助。我知道FpML網站的xsd文件中有一個重複的對象定義,但是如何擴展綁定以保持xsd的真實性。由於此文件是市場標準,我不想更改xsd。

感謝您的幫助。

+0

嘗試使用'jaxb:property/@ name'自定義其中一個地方以避免名稱衝突。 – lexicore

+0

這個技巧。謝謝! – nisarg406

回答

0

在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