2

hyperjaxb に実際のスキーマを処理させようとしています。このリンクからhyperjaxb maven プロジェクトをダウンロードして解凍し、サンプル スキーマを使用してルート ディレクトリに移動し、実行しcmd.exeてサンプル データでテストし、サンプルmvn clean installスキーマで動作することを確認しました。次に、、、およびファイルを実際の図式の簡素化されたバージョンに置き換えてschema.xsd、上記のリンク先の hyperjaxb プロジェクトを介して実際のアプリを実行する準備を整えることができます。それからまた走った。ただし、次のエラー メッセージが表示されます。 po.xmlbindings.xjbmvn clean install

[ERROR] Error while parsing schema(s).Location 
[ file:/C:/path/to/src/main/resources/bindings.xjb{25,53}].
com.sun.istack.SAXParseException2; systemId: 
file:/C:/path/to/src/main/resources/bindings.xjb; lineNumber: 25; columnNumber: 53; 
XPath evaluation of "xs:complexType[@name='Any']" results in empty target node  

このリンクでbindings.xjb読むことができる置換ファイルから。このリンクのファイルを 使用して、このリンクで読むことができます。 schema.xsdpo.xml

bindings.xjb の関連セクションは次のとおりです。

<jaxb:bindings node="xs:complexType[@name='Any']">
    <hj:entity>
        <orm:table name="any"/>
    </hj:entity>
</jaxb:bindings>

ANYschema.xsd の complexType の定義は次のとおりです。

<xs:complexType name="ANY"><!-- abstract="true">-->
  <xs:annotation>
    <xs:documentation>
        Some documentation.
    </xs:documentation>
  </xs:annotation>
  <xs:attribute name="nullFlavor" type="NullFlavor" use="optional">
    <xs:annotation>
      <xs:documentation>
           Some other documentation.
        </xs:documentation>
    </xs:annotation>
  </xs:attribute>
</xs:complexType>  

完全なコードは上記のリンクにあることに注意してください。 このエラーを解決するにはどうすればよいですか?

4

1 に答える 1

2

以下の構成を使用する必要があります..

<jaxb:bindings node="//xs:complexType[@name='ANY']">
    <hj:entity>
        <orm:table name="any"/>
    </hj:entity>
</jaxb:bindings>

この別のトピックの私の回答で例を見つけることができます。 https://stackoverflow.com/a/24953369/3364187


私はあなたのプロジェクトを試しましたが、この構成はうまくいきます。あなたの環境で動作するかどうか教えてください。

<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<jaxb:bindings
    version="2.1"
    xmlns:jaxb="http://java.sun.com/xml/ns/jaxb"
    xmlns:xs="http://www.w3.org/2001/XMLSchema"
    xmlns:hj="http://hyperjaxb3.jvnet.org/ejb/schemas/customizations"
    xmlns:orm="http://java.sun.com/xml/ns/persistence/orm"
    jaxb:extensionBindingPrefixes="hj orm">

    <jaxb:bindings schemaLocation="schema.xsd" node="/xs:schema">
        <jaxb:globalBindings generateIsSetMethod="true"/>
        <jaxb:schemaBindings>
            <jaxb:package name="org.jvnet.hyperjaxb3.ejb.tests.pocustomized"/>
        </jaxb:schemaBindings>
        <jaxb:bindings node="//xs:complexType[@name='InfrastructureRoot.typeId']">
            <hj:entity>
                <orm:table name="typeId"/>
            </hj:entity>
        </jaxb:bindings>
        <jaxb:bindings node="//xs:complexType[@name='II']">
            <hj:entity>
                <orm:table name="II"/>
            </hj:entity>
        </jaxb:bindings>
        <jaxb:bindings node="//xs:complexType[@name='ANY']">
            <hj:entity>
                <orm:table name="any"/>
            </hj:entity>
        </jaxb:bindings>
    </jaxb:bindings>


</jaxb:bindings>

各ノードの簡単な説明がありませんでした//

現在のノードからドキュメント内のノードがどこにあるかに関係なく、選択に一致するノードを選択します

複合型が「Any」ではなく「ANY」の場合、正しいノードは@name='ANY'

于 2014-10-16T17:31:30.063 に答える