2011-01-24 6 views
8

これが重複している場合は、私を許してください。ここに私のbinding.xjbファイルがあります。しかし、今私は複雑なタイプのターゲット "AddBankVaultRplyType"が見つからないという規則的なエラーを受けています。私は何の問題も見ません。誰か助けてくれますか?私は私がXJCを実行する場合、私はJAXB外部カスタムバインディングXJCの問題 - 空のノードの解析結果が

<xs:schema xmlns:pd="http://com/polsvc/xmlobj" xmlns:xs="http://www.w3.org/2001/XMLSchema" targetNamespace="http://com/polsvc/xmlobj" elementFormDefault="qualified" attributeFormDefault="unqualified"> 
<xs:complexType name="AddBankVaultRplyType"> 

</xs:complexType> 
<xs:element name="ServiceReply"> 
    <xs:complexType> 
    <xs:sequence> 
    <xs:element name="ReplyHeader" type="pd:MsgHeaderType"/> 
    <xs:element name="RequestHeader" type="pd:MsgHeaderType"/> 
    <xs:choice> 
    <xs:element name="AddBankVaultReply" type="pd:AddBankVaultRplyType"/> 
</xs:choice> 
</xs:sequence> 
    </xs:complexType> 
</xs:element> 
</xs:schema> 

をカスタマイズしようとしていますXSDの作品は今では私に言っているされて私はここ

<jxb:bindings 
xmlns:xs="http://www.w3.org/2001/XMLSchema" 
xmlns:xjc="http://java.sun.com/xml/ns/jaxb/xjc" 
xmlns:jxb="http://java.sun.com/xml/ns/jaxb" 
xmlns:pd="http://chubb.com/cpi/polsvc/xmlobj" 
xmlns:inheritance="http://jaxb2-commons.dev.java.net/basic/inheritance" 
jxb:extensionBindingPrefixes="inheritance" 
jxb:version="2.1" 
> 


<jxb:bindings node="/xs:schema/xs:ServiceReply/xs:complexType[@name='AddBankVaultRplyType']"> 
<inheritance:extends>com.print.poc.AddressTypeHelper</inheritance:extends> 
</jxb:bindings> 

をカスタマイズしようとしているXSDをリストアップしていますターゲット"/xs:schema/xs:ServiceReply/xs:complexType[@name='AddBankVaultRplyType']"は空ノードになります。私がここでやっている間違いは何ですか

答えて

8

スキーマの場所が設定されているバインディングをラップする必要があります。詳細については

<jxb:bindings 
    xmlns:xs="http://www.w3.org/2001/XMLSchema" 
    xmlns:xjc="http://java.sun.com/xml/ns/jaxb/xjc" 
    xmlns:jxb="http://java.sun.com/xml/ns/jaxb" 
    xmlns:pd="http://chubb.com/cpi/polsvc/xmlobj" 
    xmlns:inheritance="http://jaxb2-commons.dev.java.net/basic/inheritance" 
    jxb:extensionBindingPrefixes="inheritance" 
    version="2.1"> 
    <jxb:bindings schemaLocation="your-schema.xsd"> 
     <jxb:bindings node="//xs:complexType[@name='AddBankVaultRplyType']"> 
      <inheritance:extends>com.print.poc.AddressTypeHelper</inheritance:extends> 
     </jxb:bindings> 
    </jxb:bindings> 
</jxb:bindings> 

:それは次のようになります

+0

こんにちはブレーズは、ワークアウトされていません。同じエラーがスローされます。 – Shiv

+0

Shiv - 私は自分の答えを更新しました。今はうまくいくはずです。 –

+3

もう一度ありがとうございます。それは正常に動作しているようですが、このerror.parsingをスキーマに示しています... [エラー]サポートされていないバインディング名前空間 "http://jaxb2-commons.dev.java.net/basic/inheritance"おそらくあなたは "http://java.sun.com/xml/ns/jaxb/xjc"を意味しましたか? – Shiv

4

私は最終的に鉱山が使用されているものを一顧複合型に@XmlRootElementを追加するだけでなく、サブクラスでworkignました(JAXBが私のためにそれを追加しない理由は分かりませんが、JAXBはそれをやっているからです)

<?xml version="1.0" encoding="UTF-8" standalone="yes"?> 
<jaxb:bindings 
    xmlns:jaxb="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" 
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
    xmlns:annox="http://annox.dev.java.net" 
    xsi:schemaLocation="http://java.sun.com/xml/ns/jaxb http://java.sun.com/xml/ns/jaxb/bindingschema_2_0.xsd 
        http://annox.dev.java.net " 
    jaxb:extensionBindingPrefixes="xjc annox" 
    version="2.1"> 

    <jaxb:globalBindings> 
    <jaxb:serializable uid="1"/> 
    <!-- All generated classes must have MySignature interface (supplied in dependencies) --> 
    <xjc:superClass name="com.cigna.framework.DataObject"/> 
    <xjc:superInterface name="com.cigna.framework.InterfaceTest"/> 
    <!-- All temporal fields are implemented as Joda DateTime and use DateUtils as an adapter --> 
    <jaxb:javaType 
     name="org.joda.time.DateTime" 
     xmlType="xs:time" 
     parseMethod="com.cigna.framework.util.DateUtil.stringToDateTime" 
     printMethod="com.cigna.framework.util.DateUtil.dateTimeToString" 
     /> 
    </jaxb:globalBindings> 



    <!-- Application of annotations to selected classes within schemas --> 

    <!-- org.example.SomeRootType @XmlRootElement --> 
    <jaxb:bindings schemaLocation="../schemas/externalaction_2012_03.xsd" node="/xs:schema"> 
    <jaxb:schemaBindings > 
     <jaxb:package name="com.framework.action"></jaxb:package> 
    </jaxb:schemaBindings> 

    </jaxb:bindings> 

    <jaxb:bindings schemaLocation="../schemas/common_2012_04.xsd" node="/xs:schema"> 
    <jaxb:schemaBindings > 
     <jaxb:package name="com.framework.common"></jaxb:package> 
    </jaxb:schemaBindings> 

    <jaxb:bindings node="xs:complexType[@name='PersonNameType']"> 
     <annox:annotate> 
     <annox:annotate annox:class="javax.xml.bind.annotation.XmlRootElement" name="SomeRootType"/> 
     </annox:annotate> 
    </jaxb:bindings> 
    </jaxb:bindings> 

    <jaxb:bindings schemaLocation="../schemas/utilities_2012_03.xsd" node="/xs:schema"> 
    <jaxb:schemaBindings > 
     <jaxb:package name="com.framework.util"></jaxb:package> 
    </jaxb:schemaBindings> 

    </jaxb:bindings> 

</jaxb:bindings> 

もちろん、私はpom.xmlに苦労しましたが、最終的に私のために働いたこの解決策になりました。

 <plugin> 
      <groupId>org.jvnet.jaxb2.maven2</groupId> 
      <artifactId>maven-jaxb2-plugin</artifactId> 
      <version>0.8.1</version> 
      <executions> 
       <execution> 
        <id>process-xsd</id> 
        <goals> 
         <goal>generate</goal> 
        </goals> 
        <phase>generate-sources</phase> 
        <configuration> 
         <schemaIncludes> 
          <include>schemas/*.xsd</include> 
         </schemaIncludes> 
         <bindingIncludes> 
          <include>schemas/*.xjb.xml</include> 
         </bindingIncludes> 
         <generateDirectory>${project.build.directory}/generated-sources</generateDirectory> 
         <extension>true</extension> 
         <args> 
          <arg>-Xannotate</arg> 
         </args> 
         <plugins> 
          <plugin> 
           <groupId>org.jvnet.jaxb2_commons</groupId> 
           <artifactId>jaxb2-basics-annotate</artifactId> 
           <version>0.6.3</version> 
          </plugin> 
          <plugin> 
           <groupId>org.jvnet.jaxb2_commons</groupId> 
           <artifactId>jaxb2-basics</artifactId> 
           <version>0.6.3</version> 
          </plugin>        
         </plugins> 
        </configuration> 
       </execution> 
      </executions> 
     </plugin>   

後に、 ディーン

+0

特別なmavenコマンドを使用してクラスをビルドしましたかmvn cleanパッケージですか? –

関連する問題