問題タブ [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.
java - JAXB2 で動作するようにポリモーフィック オブジェクトのコレクションを構成する
XML と Java オブジェクトの間でマーシャリング/アンマーシャリングを実行するために、Castor から JAXB2 に切り替えています。ポリモーフィック オブジェクトのコレクションを構成しようとすると問題が発生します。
サンプル XML
プロジェクトクラス
リストは正常に機能します。oranges
リストに 2 つのオレンジが表示されます。しかし、設定方法がわかりませんfruitList
。果物は 3つfruitList
あるはずです。オレンジ 2 つとリンゴ 1 つです。
フルーツクラス
Fruit は抽象クラスです。何らかの理由で、このクラスを抽象として定義すると、多くの問題が発生するようです。
オレンジクラス
アップルクラス
fruitList
ここで必要なものを実現するには、どのように設定すればよいProject
ですか?
どうもありがとう!
java - JAXB2: ネストされた要素を同じ Java クラスにマッピングする
ネストされた要素を同じ Java クラスにマップしようとすると問題が発生します。
XML
ここでやろうとしているのは、id
属性とtext
要素をSlideText
クラスに設定することです。
モジュールクラス
スライドクラス
SlideText クラス
@XmlElementWrapper
onプロパティを使用しようとしましたが、コレクションにのみ適用できるtext
例外が発生します。@XmlElementWrapper
のプロパティにマップ<layout><text>hello</text></layout>
する方法はありますか?SlideText
text
ありがとう。
アップデート
ここで何を達成しようとしているのかを説明するために、使用するレイアウトに応じてスライドを任意のタイプにすることができます。Aはそれが A であることはmodule
知ってslide
いますが、それがどのスライドであるかはわかりません。そのため、抽象Slide
クラスを使用しています。
基本的に、これが機能する場合は、作成SlideImage
しSlideTextVideo
、拡張しSlide
ます。
実際の XML ファイルは次のようになります。
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)を生成しています
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)この状況で適切に動作するように構成できるかどうか
完全なスタック トレース:
jaxb - JAXB2アンマーシャリングxsd:anyTypeエラー
次のようなxsd:anyType(ur-type)オブジェクトを含むデータのマーシャリングを解除する際に問題が発生しました。
JAXB2は、上記の要素に対して次のJavaクラスを作成します。
マーシャリングは機能しますが、マーシャリングを解除すると、次の例外がスローされます。
使ってます;
ありがとう、
ヘンリー・キム
jaxb - JAXB の問題のデバッグ
オブジェクトをマーシャリングするときに JAXB 2 で問題が発生しています。単体テストでは問題なく動作する XmlJavaTypeAdapter がありますが、(JAX-WS を使用して) Web サービスから同じオブジェクト グラフをマーシャリングしようとすると、XmlJavaTypeAdapter は完全に無視されます。この問題をデバッグする最も簡単な方法は何ですか?
この問題を示す単純なスタンドアロン プロジェクトを svn リポジトリにチェックインしました。誰かが私が明らかに間違ったことをしているかどうかを見てもらえますか? プロジェクトの URL はhttp://archfirst.googlecode.com/svn/trunk/java/examples/jaxb-jaxws-sampleです。問題を詳細に説明する readme.txt ファイルがルート フォルダーにあります。
ありがとう。
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 で何が起こっているか知っている人はいますか? みんなは何使ってる?
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
java - JAXB 2 RI の XJC シンプルモードがコレクション名を変更するのはなぜですか?
JAXB シンプル バインディング モードでは、コレクション名が複数形の「バージョン」に変更されます。たとえば、「additionalData」は「additionalDatas」になります。この動作を変更する解決策はありますか? XSD フィールド名と同じ Java フィールド名とメソッド名が必要です。私のバインディングファイル:
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 が使用するクラスを指定する方法はありますか?