問題タブ [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.
java - JAXBコード生成:制限付きタイプ->ゼロオカレンスフィールドを削除する方法は?
JAXB 2.1を使用して、変更できないいくつかのXSDファイル(実際にはWSDLファイルから取得)からJavaクラスを生成していますが、複合型の制限に関連する問題があります。制限の1つは、オカレンス構成をからminOccurs="0" maxOccurs="unbounded"
に変更しますminOccurs="0" maxOccurs="0"
。したがって、このフィールドは制限付きタイプでは不要になりました。しかし実際には、JAXBは0ではなく[0..1]カーディナリティを持つ制限付きクラスを生成します。
ちなみに、<xjc:treatRestrictionLikeNewType />
XSD制限がJavaクラスの継承にマップされないように、世代は調整されています。
次に例を示します。
複合型Aでフィールドを定義する方法は次のとおりです。
<element name="qualifier" type="CR" maxOccurs="unbounded" minOccurs="0"/>
Aを制限する別の複合タイプBで同じフィールドを制限する方法は次のとおりです。
<element name="qualifier" type="CR" minOccurs="0" maxOccurs="0"/>
Aで生成されたクラスには、次のものがあります。
@XmlElement(name = "qualifier")
protected List<CR> qualifiers;
そして、Bで生成されたクラスには次のものがあります。
protected CR qualifiers;
JAXBについての私の理解が不十分なため、XmlElement
注釈がないため、JAXBはこのフィールドをマーシャリング/アンマーシャルしないように指示されます。私が間違っている?私が正しければ、JAXBにqualifiers
フィールドをまったく生成しないように指示する方法はありますか?これは、制約を尊重するため、私の意見でははるかに優れた世代になるでしょう。
何かアイデア、トピックについての考えはありますか?
ありがとう!!
java - JAXB の問題がある Maven リリース プラグイン
Artifactory からプルされた XML スキーマの JAR をアンパックするフェーズと、XJC クラスを生成するフェーズを含む Maven リリース プラグインを使用するようにプロジェクトをセットアップしました。Maven リリース 2.2.1 を使用しています。
残念ながら、後者のフェーズは前者の前に実行されています。つまり、スキーマの XJC クラスが生成されていません。部分的な POM.XML は次のようになります。
グーグルで検索してみましたが、残念ながら何千ものリンクがあり、どれも実際には関連していません。実行される前に実行される b.
ありがとう
regex - xjc (ant) および jaxb 検証による xsd の正規表現のバックスラッシュ
xsd ファイルに次の正規表現タイプがあります。
xjc を介して ant でこれから生成すると、次の例外が発生します。
すべてのバックスラッシュ () を 2 つのバックスラッシュ (\) に変更することで、これを修正できます。
しかし、マーシャリング中に検証が実行されると、次の例外が発生します。
明らかに、二重バックスラッシュ (\\) が検証の失敗の原因です。しかし、単一のバックスラッシュをエンコードして xjc を機能させるにはどうすればよいでしょうか?
編集:
ああ、答えが見つかりました。xjc regexp では "\b" がサポートされていないようです。それらを除外すると問題が修正され、エラーなしで生成され、実行時に機能するようになりました。わーい!:)
これが単語の境界なしで安全かどうかは誰にもわかりますか? 多分代替案はありますか?
java - XJC によって生成された名前空間
xjcコード生成ツール*.xsd
を使用して、ファイルのパッケージから Java ソース ファイルを生成しようとしています。
これらの *.xsd ファイルで使用される名前空間は次のとおりです。
XJCは次のようにパッケージを生成します。
com.domain.foo.bar.x は、「...x」および「...xy」の xsd 名前空間から生成された Java ファイルをそこに配置します。
com.domain.foo.bar.x_y を実行し、「...xyz」xsd 名前空間から生成された Java ファイルをそこに配置します
ここで達成したいことは適切です:
これはどういうわけか可能ですか?たぶん、カスタムJAXBバインディングを使用していますか? jaxb カスタム バインディング ドキュメントを調べましたが、それが可能かどうかはわかりません。
基本的には「/」と「.」の両方をxjcで扱ってほしい。パッケージセパレーターとして。
どんな助けでも感謝します。
アダルベルト
java - JAXB Antタスクエラー:xjc2[エラー]null不明な場所
Antのxjc2タスクを使用していくつかの有効なXMLドキュメントをバインドすると、次の失敗メッセージが表示されます。
ドキュメントは正常にバインドされた他のファイルと非常によく似ており、インポートされたスキーマはすべて存在します。xjcを冗長モードで実行すると次のようになります。
誰かがこれが何を意味するのか分かりますか?
java - JAXBObjectfactoryのQNameにアクセスできるようにする
JAXBを使用してJavaクラスを生成すると、常にObjectFactoryという名前のクラスが取得されます。このクラスには、名前空間を含むプライベート属性QNameがあります。
この属性に外部からアクセスできるようにするようにジェネレーターに指示することは可能ですか?それで、多分それを公開するか、それのためのゲッターを作成しますか?
xml - JAXB-XJCはappinfoをクラス構造にコンパイルできますか?
フォーム生成のためにいくつかの異なるアプリケーションによって読み取られるスキーマがあります。それらの1つは、JAXB/XJCを使用してクラス構造をコンパイルします。スキーマには、フィールドのフレンドリ名のappinfo情報が含まれています。例:
XJCにこの情報をコンパイルさせる方法はありますか?
jaxb - xsd:attributeGroup のために JAXB によって生成されたクラス名を制御しますか?
私は JAXB を使用して、作成中のアプリケーションの XML を Java にバインドしています。amountとmaxAmountという 2 つのamount要素を含むmeasureという要素があり、これを使用して下限値と上限値をモデル化します。amountとmaxAmountはそれ以外は同一であり、Java に非整列化されたときに同じクラスで実装したいと考えています。
以下は、私が JAXB にフィードする XML スキーマからの抜粋です。
JAXB はこれから、以下のより精巧なバージョンを作成します。
Measure.AmountとMeasure.MaxAmountは、名前を除いて同じですが、もちろん、Java に関する限り、互いにほとんど関係がありません。
amountとmaxAmountの両方で JAXB に同じクラスを使用させる方法はありますか?
完全にクリーンになるために ;-) Trang を使用して RNC から XML スキーマを生成することを言及しておく必要があります。質問に対する答えが「XML スキーマを変更する」である場合、「その XML スキーマを生成するために RNC を変更するにはどうすればよいですか?」という補足的な質問があります。私の RNC は次のようになります。
私は RNC の方が理解しやすいので RNC を使用しますが、私の問題の解決策が XML スキーマを使用することだけである場合は、それで構いません。
スティーブ
java - List ではなく Set としてコレクションを生成するように XJC バインディングを構成できますか
次のようなスキーマがあるとします。
XJC は次のような Java を生成します。
PageContainer 要素に一意のコレクションを適用したいと考えています。これはリバース エンジニアリング プロジェクトであるため、スキーマで明示的に強制されるかどうかについてはあまり心配していません。
スキーマまたは XJC バインディングで何かを指定することにより、PageContainer
要素を として生成することは可能ですか?Set<PageContainerType>
xml - XMLスキーマドキュメントでmixed=trueを無視するJAXBXJCコンパイラ
XJCはmixed="true"
XMLスキーマ要素を完全に無視しているようで、テキストコンテンツを抽出できません。以下のサンプルXMLから、「タイトルテキスト」を抽出できる必要があります。認識されない限りmixed="true"
、アクセサーは作成されず、XMLからマーシャリングされません。
問題を示す完全ですが最小化されたスキーマは次のとおりです。
上記ではmixed="true"であることに注意してください。それにもかかわらず、生成されたスキーマフラグメントにはそれへの参照が含まれていません。また、生成されたクラスはXmlMixed
アノテーションも、値またはコンテンツアクセサーも使用していません。
XJC / JAXBが混合コンテンツフィールドを完全に無視するのはなぜですか?JAXB2.1とJAXB2.2の両方を試しましたが、生成されたコードにはわずかな違いしかありません。
Note: I can't change the schema as the actual schema is a standards-compliant healthcare (HL7) schema.