問題タブ [xjc]
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.
binding - Jaxb バインディング ファイルが無視される
一連のスキーマの JAXB バインディングを構築するのに少し問題があり、それが私を少しバタバタさせています。問題のスキーマは次のとおりです (これは、この特定のビルドの 5 つのスキーマの 1 つにすぎません)。
xjc は、上記で宣言された属性が既に別の場所で宣言されていると主張しています。
少し調査を行うと、問題は重複した属性を解決するためにバインディングファイルが必要であるということであると私は信じるようになります....そして私は1つ持っています:
それでも問題は解決しません。バインディング ファイルの有無にかかわらず、エラー メッセージは同じです。ノード セレクターの xpath を台無しにすると、エラー メッセージが表示されるため、ファイルが使用されていることはわかっています。xjc はバインディング ファイルが存在することを認識しているが、それを無視しているようです。
バインディングの構築に失敗するコマンド ラインは次のとおりです。
jdk6ネイティブjaxb(2.0)とjaxb 2.2.4の両方でこれを試しました(承認されたディレクトリにjaxb-api.jarをインストールしました)
java - サードパーティの XML スキーマの競合を解決するにはどうすればよいですか?
サードパーティによって作成された一連のスキーマ記述子ファイルを使用しています。それらの JAXB スタブを生成する必要があります。各 XSD は、さまざまなメッセージ タイプと、サポートされている多数の単純型および複合型を定義します。型の多くは各 XSD に共通ですが、作成者はそれらを個別の XSD に分解するのではなく、各名前空間で定義することを選択しました。これにより、xjc を使用して XSD を単一のパッケージにコンパイルしようとすると、名前空間の衝突が発生します。それらを独自のパッケージに分けることを余儀なくされています。問題は、交換可能であるべきときに交換不可能になることです。あるメッセージ タイプのデータを別のメッセージ タイプで使用するには、さらに多くの変換を行う必要があります。
私の質問: いくつかの方法 (バインディングのカスタマイズ?) はありますか?異なるパッケージにまたがる固有のクラスではなく、共有タイプごとに 1 つの Java クラスを使用するように xjc に指示できますか?
簡単な例を次に示します。挿入メッセージ用と応答メッセージ用の 2 つの XSD があります。応答は、挿入メッセージを参照するためのものです。
これが2番目のXSDです...
Identifier
両方のスキーマで複合型が同一であることに注意してください。メッセージタイプ間で交換可能であり、交換可能であるべきです。しかし、このように xjc を実行すると...
xjc -d java -p example.msg insert.xsd response.xsd
...次のように、Message、Identifier、および ObjectFactory クラスで衝突が発生します。
xjc が不平を言っている理由を完全に理解しています。xjc をだまして Identifier 型に共通のクラスを使用させ、ObjectFactory クラスの衝突を解決する方法を見つけようとしています。1 つの解決策は、一般的な型を個別の名前空間に分割し、各メッセージ型の XSD からそれらを参照することですが、前述のように、これらはすべてサード パーティによって記述されており、私にはそれらを変更する能力がありません。
今のところ、各 XSD を個別の Java パッケージにコンパイルしています。これは機能しますが、非常に面倒です。
エラー出力は、バインディングのカスタマイズでこれを行う方法があることを示唆していますが、これまでのところ、それを機能させる方法はわかりません. 誰かが私を正しい方向に向けることができますか?
java - 整列化された要素/タグで不要な名前空間宣言を回避するには?
自分で作成したものではなく、別のパーティから受け取った XSD があります。したがって、相手との互換性を確保する必要があるため、この XSD を変更することはできません。
シンプルバインディングモードを使用してXJC 2.2およびJAXB 2.2を使用して、空のhello要素内にルート要素を作成したいと考えています。しかし、マーシャリングすると、余分な名前空間のがらくたがたくさん発生します。私には不要に見えます。(ただし、動作しますが、送信するデータが増えます...)
XSD ルート要素:
Java コード:
マーシャリングされた結果:
望ましい結果:
または:
できれば XSD を変更したり、XJC コンパイル済みクラスを手動で変更したりせずに、これを可能にする方法はありますか?
xsd - 他のパッケージで使用する共通の xsd 生成クラスを作成する
生成された同じクラスを別のパッケージで使用しようとしています。したがって、構造は次のようになります。
しかし、私はこれを取得し続けます:
私の common.xsd は次のようになります。
objectA.xsd は次のようになります
objectB.xsd は次のようになります。
次のような一般的なバインド ファイル common.xjb があります。
最後に、私のMavenジョブは次のようになります。
sbt - SBT の sbt-xjc プラグインでソース ディレクトリを変更するにはどうすればよいですか?
ドキュメントによると、デフォルトの場所は src/main/resources です。
私の XSD は src/main/schema にあるので、ソース設定を変更する必要があります。
だから私は以下を使用しました:
これにより、次の結果が得られます。
java - xjc不明な場所-JAXBXJCを使用したxsdsからjavaへのエラー
JAXBを使用して複数のxsdsをJavaに変換している最中です。IDEとしてJdeveloperバージョン10.1.3.4を使用しています。JAXB 1.0バージョン、Xerces-J 2.6.2
以下は、ビルドターゲットのシーケンスと以下からの出力です。私も-nvスイッチを使おうとしました上記でもうまくいきませんでした。JAXBは初めてです。
以下のアリのログを見つけてください:
助けてください:
java - GlassfishからのJAXBXJCコンパイラリファレンス実装の代替手段はありますか?
GlassfishのJAXBXJCコンパイラのリファレンス実装に代わるものがあるかどうか疑問に思っています!?私を間違って理解しないでください、XJCは正常に動作しています。ただし、これが「リファレンス実装」である場合は、他の実装が必要です。IBMから何かありますか?
ant - IntellijIDEAはXJCタスク属性を認識しません
XJCタスク定義を含むantbuild.xmlファイルがあります。
jaxb dircotnainsjaxb-xjc.jarとXJCTaskクラスが含まれています。
次に、いくつかのターゲットでxjcタスクを呼び出します。
Intellij IDEAは、xjc呼び出しの構造/スキーマを認識せず、すべての属性(ターゲット、パッケージ、ヘッダー)と含まれている要素(スキーマ)を赤で強調表示します。
Antオプションを選択し、jaxb-xjc.jarを追加のクラスパスリストに追加した場合、これは役に立ちません。バンドルされたAnt1.8.2を使用しています
悪い点は、IDEAでコンパイルすると、関連するエラーがたくさん発生することですが、ビルドスクリプトを実行すると、すべてが正常に機能します。これらのエラーを抑制したい。
何か案は?
maven - jaxb2mavenプラグインは2回目の実行では機能しません
モジュール式のプロジェクトがあり、モジュールごとに、jaxb2-maven-pluginを使用してxjcでXSDファイルをコンパイルします。ここで、モジュールがA->Bの順序でコンパイルされているとします。Aの場合はすべて正常に動作しますが(つまり、* XsdImpl.javaを取得します)、BIの場合は次のようになります。
両方のモジュールは、プラグインに同じ構成を使用します。
エラーは常に2番目のモジュールで発生します(AかBかは関係ありません)。私は舞台裏で何が起こっているのかを理解するために多くの時間を費やしましたが、残念ながら成功しませんでした...たとえば、ここで最初の実行時に何が起こるかを理解したいと思います。
org.apache.xerces.jaxp.SAXParserImplの代わりに別のクラスが使用されていると思いますが、どういうわけかorg.apache.xerces.jaxp.SAXParserImplが2回目に選択されています。または、誰かがすでに同じ問題を経験しましたか?
ヒント/ヘルプを事前に感謝します!さよなら
java - XJC-Xpathを使用してxmlを生成します
XJCを使用してXSDをJavaオブジェクトに変換した後、xpathと値をxpathに与えるxmlファイルを生成したいと思います。
例。
xpathと値を次のように指定するとします
生成されたオブジェクトに内部的に割り当てる必要がありますCustomerType.setName()
....。
XMLも、Xpathルールに従って期待どおりに生成される必要があります。
Castorでは、ClassDescriporとFieldDescriptorを使用してこれを実行できることを知っています。しかし、XJCを使用してこれを行う方法を知りたいです