2011-07-18 13 views
1

私はそれがJAXBを介して可能であると主張 (抽象型などから降順すべての具体的なタイプを見つける。)タイプとXSDでそれらの関係を処理するためにこのページを必要とする:http://www.antonioshome.net/blog/2009/20091012-1.phpが、私は、Java 6が付属していますXJCでエラーが発生します。エラーは次のとおりです。JAXBを使用してxmlスキーマでXMLスキーマを処理できますか?

[ERROR] Element "{http://www.w3.org/2001/XMLSchema}annotation" shows up in more 
than one properties. 
    line 248 of file:/C:/tmp/xsdProcessing/XMLSchema.xsd 

[ERROR] The following location is relevant to the above error 
    line 242 of file:/C:/tmp/xsdProcessing/XMLSchema.xsd 

私はこの問題への言及を見てきましたが、私は、問題や解決策のソースのいずれかの明確な説明を見ていません。 今日、JAXBを使用してxmlスキーマのxmlスキーマを操作することは可能ですか?そうでない場合は、代替手段は何ですか? JAXBはJavaオブジェクトを作成するためにスキーマをどのように処理するのですか?

答えて

0

はい、xjcを使用することができます。あなたが経験している問題は、この問題を解決する際に私が遭遇した2つのハードルのうちの最初のものです。

問題の原因について完全にはっきりしていませんが、解決策はJAXB RIに存在する「よりシンプルで優れたバインディング」拡張機能です。 hereと私は今見つけられないKawaguchi Kohsukeの他の古いブログの記事で説明されています。

あなたはXJCとmy answer to another question中1(XMLSchema.xsdをコンパイルしようとしたとき、私が直面した第二の問題)と同様の結合ファイルを実行するときに-extensionフラグを使用する場合は成功を持っている必要があります。

私は実際にXMLスキーマをインポートするXMLをマーシャリングしようとはしていませんでしたので、まだ遭遇していない問題が多いかもしれません。

1

XMLSchemaが有効ではないようです。 XML処理ツール(XMLプラグインまたはXmlSpyを使用しているNotepad ++など)に対してこれを検証しようとしましたか?

+0

私のXMLスキーマがあるhttp://www.w3.org問題を解決し、次のJAXBバインディングファイルを使用したJava 6でJAXBの問題を知られているようです/2001/XMLSchema.xsd XMLスキーマのxmlスキーマ(w3)。私はそれが妥当性の問題を持っていることを疑う。人々は成功を報告している、私が与えたリンクを参照してください。私が与えたアドレスにJava 6とxmlスキーマがあると、質問に含まれているエラーが表示されています。 – mahonya

0

JAXB 2.1.10で同じ問題が発生しました。

<?xml version="1.0" encoding="UTF-8"?> 
<!-- bindings.xml --> 
<jaxb:bindings 
    xmlns:xs="http://www.w3.org/2001/XMLSchema" 
    xmlns:jaxb="http://java.sun.com/xml/ns/jaxb" 
    xmlns:xjc="http://java.sun.com/xml/ns/jaxb/xjc" 
    jaxb:extensionBindingPrefixes="xjc" 
    version="2.1"> 

    <jaxb:bindings schemaLocation="XMLSchema.xsd" node="//xs:element[@name='schema']/xs:complexType/xs:complexContent/xs:extension/xs:sequence[1]"> 
     <jaxb:property name="SchemaElements"/> 
    </jaxb:bindings> 
</jaxb:bindings> 

出力:

$ls 
XMLSchema.dtd XMLSchema.xsd bindings.xml datatypes.dtd src xml.xsd 

$xjc -version 
xjc version "JAXB 2.1.10 in JDK 6" 
JavaTM Architecture for XML Binding(JAXB) Reference Implementation, (build JAXB 2.1.10 in JDK 6) 

$xjc -p com.example.document.xsd -d src -extension -b bindings.xml XMLSchema.xsd 
parsing a schema... 
compiling a schema... 
com\example\document\xsd\All.java 
com\example\document\xsd\Annotated.java 
com\example\document\xsd\Annotation.java