問題タブ [jaxb2]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票する
3 に答える
2371 参照

java - JAXB2 で動作するようにポリモーフィック オブジェクトのコレクションを構成する

XML と Java オブジェクトの間でマーシャリング/アンマーシャリングを実行するために、Castor から JAXB2 に切り替えています。ポリモーフィック オブジェクトのコレクションを構成しようとすると問題が発生します。

サンプル XML

プロジェクトクラス

リストは正常に機能します。orangesリストに 2 つのオレンジが表示されます。しかし、設定方法がわかりませんfruitList。果物は 3つfruitListあるはずです。オレンジ 2 つとリンゴ 1 つです。

フルーツクラス

Fruit は抽象クラスです。何らかの理由で、このクラスを抽象として定義すると、多くの問題が発生するようです。

オレンジクラス

アップルクラス

fruitListここで必要なものを実現するには、どのように設定すればよいProjectですか?

どうもありがとう!

0 投票する
2 に答える
6128 参照

java - JAXB2: ネストされた要素を同じ Java クラスにマッピングする

ネストされた要素を同じ Java クラスにマップしようとすると問題が発生します。

XML

ここでやろうとしているのは、id属性とtext要素をSlideTextクラスに設定することです。

モジュールクラス

スライドクラス

SlideText クラス

@XmlElementWrapperonプロパティを使用しようとしましたが、コレクションにのみ適用できるtext例外が発生します。@XmlElementWrapper

のプロパティにマップ<layout><text>hello</text></layout>する方法はありますか?SlideTexttext

ありがとう。

アップデート

ここで何を達成しようとしているのかを説明するために、使用するレイアウトに応じてスライドを任意のタイプにすることができます。Aはそれが A であることはmodule知ってslideいますが、それがどのスライドであるかはわかりません。そのため、抽象Slideクラスを使用しています。

基本的に、これが機能する場合は、作成SlideImageSlideTextVideo、拡張しSlideます。

実際の XML ファイルは次のようになります。

0 投票する
3 に答える
4922 参照

java - requiredがtrueに設定されている場合、JAXBminOccursは消えます

これは、@XmlElementのJAXBドキュメントから取得しました

required()がtrueの場合、JavabeanプロパティはminOccurs="1"を使用してXMLスキーマ要素宣言にマップされます。maxOccursは、単一値のプロパティの場合は「1」、複数値のプロパティの場合は「無制限」です。

しかし、私が言うとき

.xsdで次のようになります

minOccursを1に等しくするにはどうすればよいのでしょうか。required = true原因minOccursが消えたようです。

編集 デフォルト値が1であることに気付きました。とにかく、minOccursが.xsdに1として表示されるようにすることはできますか?

Edit2 JAXBContext.generateSchema を使用してスキーマ(FYI)を生成しています

0 投票する
1 に答える
3482 参照

maven-2 - 春のJaxb2Marshaller + contextPath + tomcatがMavenスローに埋め込まれました

春の Jaxb2Marshaller (Web サービスなし) を使用して、一部の xml をアンマーシャリングしています。xml コードは maven-jaxb-plugin を介してコード生成され、Spring で Jaxb2Marshaller を次のようにインスタンス化します。

次に、次から始めます。

最初のアンマーシャラーは正常に作成され、2 番目は org.springframework.oxm.jaxb.JaxbSystemException でスローされます。これは、ObjectFactory (maven-jaxb-plugin によって生成され、実際にjar、正しいパッケージ内)。

私は実際には2つのアンマーシャラーを持っています(ただし、コロンで区切られたパッケージパスを持つ1つのアンマーシャラーとcontextPathで試しましたが、同じ結果が得られました)。

完全なTomcatコンテナにデプロイすると正常に動作するため、これは一般的にSpringまたは私の構成の問題ではないと思います。maven は tomcat を project/target/tomcat フォルダーに配置し、lib ディレクトリがないなど、いくつかの違いがあることに気付きました。組み込みのTomcatと通常のインストールの違いが何であるかは実際にはわかりません。

誰かが説明できますか:
1)組み込みのTomcatが通常のインストールとどのように異なるか
2)既知の制限がある
かどうか3)この状況で適切に動作するように構成できるかどうか

完全なスタック トレース:

0 投票する
0 に答える
1206 参照

jaxb - JAXB2アンマーシャリングxsd:anyTypeエラー

次のようなxsd:anyType(ur-type)オブジェクトを含むデータのマーシャリングを解除する際に問題が発生しました。

JAXB2は、上記の要素に対して次のJavaクラスを作成します。

マーシャリングは機能しますが、マーシャリングを解除すると、次の例外がスローされます。

使ってます;

ありがとう、

ヘンリー・キム

0 投票する
1 に答える
985 参照

jaxb - JAXB の問題のデバッグ

オブジェクトをマーシャリングするときに JAXB 2 で問題が発生しています。単体テストでは問題なく動作する XmlJavaTypeAdapter がありますが、(JAX-WS を使用して) Web サービスから同じオブジェクト グラフをマーシャリングしようとすると、XmlJavaTypeAdapter は完全に無視されます。この問題をデバッグする最も簡単な方法は何ですか?

この問題を示す単純なスタンドアロン プロジェクトを svn リポジトリにチェックインしました。誰かが私が明らかに間違ったことをしているかどうかを見てもらえますか? プロジェクトの URL はhttp://archfirst.googlecode.com/svn/trunk/java/examples/jaxb-jaxws-sampleです。問題を詳細に説明する readme.txt ファイルがルート フォルダーにあります。

ありがとう。

0 投票する
1 に答える
724 参照

maven-2 - JAXB2 で使用できる Maven2 プラグインは何ですか?

Maven2 プラグインを介して JAXB2 を使用して、XML スキーマ ファイルから Java ソース コードを生成したいと考えています (このブログ投稿のように)。

JAXBには 2 つのMavenプラグインがあるようです。(org.codehaus.mojo:jaxb2-maven-plugin) Codehaus でホストされています。

java.net のものには、XJC プラグインなどのより多くの機能があるようです。しかし、その java.net ページでは、ドキュメントについてhighsource.orgを参照していますが、残念ながら最近は利用できないようです。

それで、最良の選択は何ですか?highsource.org で何が起こっているか知っている人はいますか? みんなは何使ってる?

0 投票する
1 に答える
3226 参照

ant - schemagen ant タスクが package-info.java を無視する

シナリオは次のとおりです。XML スキーマ ファイルを生成したいすべての JAXB アノテーション付きクラスを含むJava パッケージ ( myapp.config ) があります。パッケージには、パッケージ要素に@XmlSchema注釈を含むpackage-info.javaファイルもあり、パッケージ全体で有効です。

JDK に付属のschemagenコマンドライン ツールを実行すると、

正しい結果が得られます。生成されたschema1.xsdファイルのルート要素には、targetNamespaceとその他の必要な属性が含まれています。

ただし、Ant スクリプト内で同じタスクを実行したい場合は、

結果のschema1.xsdファイルには名前空間の痕跡がないため、schemagen ツールは名前空間の注釈を完全に無視しているようです。

詳細モードとデバッグモードでschemagenタスクを実行すると、ツールがpackage-info.javaを除くすべての.javaファイルをロードすることが明らかになりました。そのため、名前空間について何も認識していません。

以前にこの奇妙な行動に遭遇したことがありますか? コマンドライン ツールはパッケージ情報ファイルを処理し、Ant タスクは処理しないのはなぜですか? Ant タスクを機能させるにはどうすればよいですか?

前もって感謝します、
buc

0 投票する
1 に答える
12103 参照

java - JAXB 2 RI の XJC シンプルモードがコレクション名を変更するのはなぜですか?

JAXB シンプル バインディング モードでは、コレクション名が複数形の「バージョン」に変更されます。たとえば、「additionalData」は「additionalDatas」になります。この動作を変更する解決策はありますか? XSD フィールド名と同じ Java フィールド名とメソッド名が必要です。私のバインディングファイル:

0 投票する
2 に答える
9332 参照

spring-mvc - 同じ @XmlRootElement 名を持つ複数のクラスで Jaxb2Marshaller を使用する

spring-mvc と Jaxb2Marshaller を使用して Web サービスに取り組んでいます。

2 つのクラスがあり、両方に同じ@XmlRootElement名前の注釈が付けられています

3 つのクラス (AbstractRequest、Foo、Bar) はすべて、classesToBeBound リストに同じ順序で含まれています。

Bar を使用するリクエストが正常に機能するようになりました。しかし、Foo を使用するものは、メッセージによるアンマーシャリング中に ClassCastException 例外をスローします。Bar cannot be cast to Foo

コントローラーコードはこれ、

spring-servlet.xml ファイルでバインドされるクラスのリストで Foo の後に記述されているため、Bar が Foo をオーバーライドしているため、これが発生していると思います。

ただし、複数のクラスに注釈が付けられて@XmlRootElement(name="response")おり、応答をマーシャリングしても問題はありません。

非整列化のために jaxb2Marshaller が使用するクラスを指定する方法はありますか?