問題タブ [moxy]

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 投票する
1 に答える
4351 参照

hibernate - (moxy)jaxbマーシャリングおよび休止状態のプロキシオブジェクト

ここ数日、MOXy JAXBを使用して、HibernateモデルのXMLマーシャリング/アンマーシャリングをサポートしようとしました。これを行おうとすると、休止状態のプロキシオブジェクトで問題が発生しました。次のようなものを考えてみましょう。

次の方法でMOXyJAXBを使用してこのコードをマップしようとしました。

私の問題は、休止状態がユーザーでgetAddress()を呼び出すことによって取得されたアドレスのプロキシオブジェクトをインスタンス化することです。次に、JAXBがオブジェクトをマーシャリングしようとすると、それが実際にマーシャリングしようとしているCoolAddressであることがわかりません。その結果、CoolAddressのプロパティがマーシャリングされません。

私は次の可能な解決策をグーグル/検討しました:

  • 何らかの方法でJAXBからコールバックを取得し、マーシャリングされているオブジェクトを別のオブジェクトに置き換えることができます。これにより、プロキシから実際のオブジェクトを取得できます。
  • モデル内のすべてのオブジェクトをタッチすると、Hibernateが実際のオブジェクトをフェッチします。私は、すべての非一時的なプロパティを手動で実行する以外に、これを行うための賢い方法を見つけることができませんでした。これは、静かで退屈です。
  • モデルをマーシャリングしているセッションで熱心なフェッチを使用するように休止状態を設定します。

私は別の提案を探しています、または上記の提案の1つが実装可能(そして簡単)であるかどうか。どんな助けでも大歓迎です:)。

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

java - moxyjaxbのXmlAdapterとXmlIDREF

MOXy JAXBを使用して、次のようなクラスAをシリアル化しようとしています。

重要なのは、「foos」フィールドのFooオブジェクトは、fooBarマップのFooオブジェクトのスーパーセットであるということです。したがって、「fooBar」マップの主要な要素を「foos」リストの対応する要素に「リンク」したいと思います。XmlIDおよびXmlIDREFアノテーションを使用してこれを試しました。

次に、XmlAdapterで、適応されたマップエントリのfooオブジェクトにXmlIDREFアノテーションを使用しようとしました。

上記のコードをマーシャリングすると、期待どおりに機能し、次のXMLが生成されます。

アンマーシャルをテストするために、私は次のテストコードを使用しています。

このコードは(私にとって)予期しない結果を生成します:

つまり、マップでキーとして使用されるFooオブジェクトはnullです。マップアダプタを変更してFooオブジェクトを2回マーシャリングすると、ID参照を使用する代わりに、このnullポインタを取得できません。

JAXB-RIを使用してGoogleでこれに関するいくつかの投稿を見つけることができました。ここでは、 http: //weblogs.java.net/blog/2005/08/15/pluggable-で説明されているようにIDResolverを記述して問題を解決できます。 ididref-handling-jaxb-20。残念ながら、MOXyJAXBJavaDocでそのようなクラスに関する情報を見つけることができませんでした。

回避策の提案 BlaiseDoughanの回答から、これはJAXBのMOXy実装のバグであることがわかりました。私はこのバグの(醜い)回避策を作ることができました。XMLAdapterを使用する代わりに、マップはその定義クラス内で「変換」されるという考え方です。クラスAは次のようになります。

アンマーシャルの後、transferFromListToMapメソッドを呼び出す必要があります。したがって、newAへの参照が取得された直後に、次の行を追加する必要があります。

より良い回避策/バグ修正のための提案はありがたいです:)。

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

java - 単純な XmlAdapter を機能させることができません

XmlAdapter を HashMap に機能させようとしていますが、例外が発生し続けます。私はこのブログのエントリを非常に注意深くフォローしており、コードを何度も見直しましたが、問題は見られません。

の最新バージョンをorg.eclipse.persistence.jaxb.JAXBContextFactoryJAXB プロバイダーとして使用しています。

これが私の XML のサンプルです。

上記のブログ投稿の手順に従います。

1.マッピング不可能なクラスを特定する

をマッピングしようとしていますjava.util.HashMap

2. マッピング可能な同等のクラスを作成する

3. マップ不可オブジェクトとマップ可能オブジェクトを変換する XmlAdapter を作成する

4. XmlAdapter を指定する

次のステップを追加しました。これを 5 と呼びます。スタック トレース

MappingType例外の説明は非常に明確ですが、 を に変換しようとしている場所がわかりませんHashMap。質問を入力すると答えにたどり着くことがありますが、今回はそうではありません。

簡単なことだと思います - 私の間違いに気づいたら、指摘してください!

ありがとう!

ところで、Blaise Doughan のブログには JAXB と MOXy に関する素晴らしい情報が満載で、チェックする価値があります。

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

java - MOXyとXPathを使用して、属性のリストをアンマーシャリングすることは可能ですか?

編集:Blaiseの回答で使用したように、XMLドキュメントをロードする方法は次のとおりです。ドキュメント全体ではなくノードで作業したいので、このようにロードしています。ドキュメント全体を使用しても、この方法でロードするときに問題が発生します。

私は次のようなXMLを持っています:

そしてクラス:

上記のコードは、を持っているかどうかに関係なく機能@XmlElementし、[cookie、crackers]を含むArrayListを取得します。

上記の宣言を次のように変更すると

ArrayListが空です。

私の最終的な目標は、属性を設定して、XMLが次のようになるようにすることです。

私がやろうとしていることは、XPathを使用して属性のリストを引き出すことは可能ですか?もしそうなら、どのようにですか?

ありがとうございました。

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

java - moxy jaxb @XmlIDと継承

私は次の階層を持っています:

クラスBazをマーシャリングしようとしている場所:

次のテストコードを使用しています。

残念ながら、マーシャルを実行すると、次の例外に直面します。

XmlID アノテーションが Big クラスに継承されることを期待します。マーシャルの問題を修正する「別の」 @XmlID アノテーションを Big クラスに追加しようとしました。ただし、これにより、XML スキーマを生成するときに別の問題が発生します。このスキーマには、許可されていない 2 つの ID 属性が含まれます。

私は何か間違ったことをしていますか?

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

java - jaxb.propertiesをコードに置き換えることはできますか?

EclipseLinkのJAXBの実装からいくつかの非標準の拡張機能を使用しています。その実装を有効にするには、jaxb.propertiesを使用して構成する必要があります。うまく機能します。

ただし、ビルドエラーのため、プロパティファイルが適切な場所に含まれていなかったため、デフォルトのJAXBが使用され、エラーなしでXMLファイルの解析が続行され、非標準の拡張子が無視され、動作しないBean。

これをより堅牢にするために、プロパティファイルを削除し、コードでコンテキスト構成を指定したいと思います。アノテーションがあるため、コンパイル時のEclipseLinkへの依存関係はすでにあり、展開時にこの部分を構成する必要はありません(実際、何がうまくいかないかを確認するために、構成する必要はありません)。

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

java - @XmlPathと名前空間を使用すると、MOXyJAXBから生成されたXMLスキーマでエラーが発生します

JavaモデルをいくつかのXMLにマップしようとしています。これを行うために、私はJAXBのMOXy実装を使用しています。Javaモデルから有効なXMLスキーマを生成する際に問題が発生しました。次のモデルを使用します。

そして、私は次のコードでスキーマを生成しています:

そして、私は次のpackage-info.javaファイルを使用します。

テストを実行すると、次のスキーマが取得されます。

最後の属性要素は、期待したものではないことがわかります。package-info.javaファイルを削除すると、次のスキーマが生成されます。

これは私が生成されることを期待するものです。なぜこれが当てはまるのか誰かが知っていますか?

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

java - 日食インディゴのJaxbプロジェクト

eclipse indigo で jaxb プロジェクトを作成すると、「現在選択されている JAXB ライブラリ プロバイダが無効です」というメッセージが表示されます。これは eclipselink2.3.0-Indigo です。私はここで説明されているデモの例を試すことができます: http://wiki.eclipse.org/EclipseLink/Examples/MOXy/GettingStarted MOXy カスタマイズの部分を除いて。実行してもエラーはありません。何もしていないようです。

何が欠けていますか。前もって感謝します。カマル

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

annotations - JAXB Moxy- xsd 複合型のフィールドに注釈を付ける方法に関する質問

私は JaxB を使い始めており、Moxy 実装を使用しています。Jaxb を使用して Java オブジェクト モデルに変換した業界標準の xsd があります。文字列、整数、日付などの単純なフィールドに注釈を付けることができました。

私は検索しており、4 つの属性とオプションの文字列要素を持つ xsd 複合型である次のフィールドに注釈を付けるために、正しい方向を指す必要があります。生成されたコードのサブセットは次のとおりです。

条件.java

Cd.java

Cd.java クラスは、Conditions.java クラスだけでなく、他の多くのクラスにも使用されます。

特に私の質問は、Conditions.java の problemType のフィールドにどのように注釈を付けるかです。ここで、problemType には 4 つの属性と 1 つのオプション要素があります。

実装しているクラス (Cd.java クラスを使用する 8 つの他のクラスの選択) によって xml 入力が異なるため、Cd.java に直接注釈を付けることはできません。上記の既存の注釈は、Jaxb によって自動生成されました。Conditions.java problemType の xml 入力は次のとおりです。

私の質問を明確にする必要がある場所を教えてください。最終的には、これを支援するためのリソースまたはチュートリアルをリクエストしています。

** * ***更新* ** * ** * Blaise のソリューションは、それほど複雑ではない別のプロジェクトでテストしたところ、完全に機能しました。したがって、方法は正しいのですが、メタデータ ファイルに問題があります。上記の Conditions.java ファイルを更新しました。メタデータ ファイルの実装に必要な方法に影響を与える可能性のある詳細を省いたためです。

私のoxm.xmlファイル

*メインクラス*

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

binding - 別の Jaxb 拘束力のある質問

ようやく自分の問題の 1 つを絞り込んだと思います。Moxy実装でJaxbを使用しています。バインディング ファイルで Xpath 表記を使用しています。望ましい結果が得られません。

元の jaxb 生成クラスは大きくネストされているため、テストのために、コードを以下の Condition.java にスリム化しました。

条件.java

作成したクラス: conditionConnect.java

最初のテストは、オブジェクト モデルを作成し、それを xml にマーシャリングすることでした。これは、以下のコードで正常に実行されました。

出力はそうです(成功!):

xml 文字列/ファイルを介してデータを受け取るため、バインディング ファイルを使用することにしました。Condition クラスの抜粋は次のとおりです。

problem.xml - データ入力

私のバインディング ファイル ( conditionsBinding.xml )

バインディングと xml 入力を含むメイン コード:

上記のメイン コードからの出力:

問題: バインディングを行うとき、タグ

空になるので、Cd を problemType にリンクしようとしています。したがって、problemType からの xml 出力は次のようになります。

バインディング ファイルに何が欠けているか教えてください。

編集: binding.xml ファイル。このファイルを使用して、xml 要素名を Java オブジェクトの変数名にマーシャリングします。

注: binding.xml を使用せずにコードをテストしたところ、異なる要素名で同じ結果が得られました。binding.xml のない Main.java コードは次のとおりです。

binding.xml ファイルなしの出力:

Java クラス/フィールド名の problems.xml ファイルへのマッピングは次のとおりです。

problems.xml ファイルの追加メモ:

私の conditionsBinding.xml ファイルでは、Problem_Type を次のようにコーディングしています。

これを行った理由は、Problem_Type にルート要素または name="some_field" がないためです。最初に conditionsBinding.xml で試してみました。

私がそれをしたとき、problemType のコード行を取得できなかったので、おそらくそれが私の問題である可能性があることをテストするために name="some_field" を追加しました。私はmoxy wikiの例に従っていますが、明らかに欠けているものがありますが、それを特定することはできません.

追加の編集:

以下の回答で conditionsBinding.xml を変更した後、同じ xml 出力を得ることができました。ただし、problemType は属性のリストである必要があるため、コードを次のように変更しました: conditionsBinding.xml

出力は次のようになりました (空の problemType タグ):

Cd.javaの抜粋

別の注意として、私は後でproblemCodeに注釈を付ける必要があることを認識しています。これは、Conditions.javaのAND型のフィールドでもありますが、異なるxml要素名にマップされます。これには、conditionsBinding.xml ファイルに Cd.java の別の注釈ブロックが必要になります。(マッピングは実際のものではありませんが、次のようなものが反映されます。

疑似 conditionsBinding.xml :

それは私のアプローチを微調整する必要があると私に思わせています(バインディングに依存するだけではありません)。私はhttp://wiki.eclipse.org/EclipseLink/UserGuide/MOXyにあるmoxyユーザーガイドを読んでいました 。私は次のオプションを調査し、検討しました: JPA (SAX/DOM を使用 - 真ん中のマッピングに対応)、xml-join-nodes、および xml-adapter。これらのオプション (ある場合) のどれが私の問題に役立つかは完全にはわかりません。専門家のアドバイスをいただければ幸いです。