問題タブ [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.
arrays - jaxb2Marshallerは、XMLを空のバイトarraにアンマーシャリングします
ここに問題があります。私はSpring3.0.4を使用してRESTWebサービスを作成しています(実際、私は初心者です)。クライアントからXML表現として渡されたHibernateを介してオブジェクトを永続化したいと思います。このタスクを実行するために、jaxb2を使用します。
クライアントが送信するオブジェクトは、データとメタデータという2つの息子オブジェクトを持つノードです。
問題は、クライアントがXMLを送信するときに、SIUserDataが予測不可能なbyte []配列にマーシャリングされないことです。入力の一部が切り取られることもあれば、単に空になることもあります。
たとえば、この入力
StorageInterfaceDataコンテンツ属性が空のオブジェクトではマーシャリングされていません。
文字列の終わりにStorageInterfaceDataコンテンツ属性のタイプを変更しようとしたので、問題はbyte []の処理に影響を与えると思います。すべてが正常に機能します:S。
それはコードに従います。
ノード
データ
バルクオブジェクト
メタデータクラスは、冗長になりすぎないように省略されています。誰かが物事をクリアしてくれませんか?
xml - @XmlElementWrapperはNullPointerExceptionを生成します
こんにちはすべて私は次のxmlコードを表現しようとしています:
@XmlElementWrapperアノテーションを使用してこれを実行したいと思います。
これが私がそれを使うクラスです:
これがSimpleLinkクラスです
そして最後にLinkクラス
問題は、Jaxb2を使用して上記と同様のxmlをアンマーシャリングすると発生します。NullPointerExceptionが発生します:-(。この事実についてjaxbにバグがあることを読みましたが、2006年に解決され、Springを使用しています。 3(彼自身のjaxb2ライブラリを使用)。
誰か手がかりがありますか?
xml - JAXB2マップxsd:restrictions as subclasses and(un)marshall xsi:types
私はこれを理解するために多くの研究を行ってきましたが、それでも成功していません。
このスキーマに従うXSDがいくつかあります。
Simple_Identification.xsd
たとえば、Simple_S.xsdは次のようになります。
最終的には、次のようなタグを含むXMLファイルを生成できるようにしたいと思います。
今のところ、mapSimpleTypeDefを有効にせずに、Simple_Sのような単純な型を無視して、XMLファイルをマーシャル/アンマーシャルすることができます。
mapSimpleTypeDefを有効にすると、単純型のクラスが生成されます。Simple_Identificationは、Base_3039フィールドを含むクラスにマップされます。また、Base_3039クラスにはStringフィールドが含まれています。ただし、Simple_Identificationsのさまざまなサブタイプのクラスは、Simple_Identificationを拡張せず、Simple_Identificationタイプのフィールドのみを含みます。これは、マーシャリング/アンマーシャリングの場合には役立ちません。
たとえば、このXMLファイルをアンマーシャリングする場合:
Identityの値は、特殊なSimple_Sオブジェクトではなく、Simple_Identificationオブジェクトにマッシュオール解除されます。さらに、マーシャルバックすると、生成されたXMLですべてのxsi:type属性が失われます。
したがって、基本的に、私の質問は、xsi:typesを含むXMLを適切にアンマーシャリングして生成するにはどうすればよいかということです。私が使用しているスキーマは、これを行うのに適切ではありませんか?xsd:restrictionはJAXBによる継承のタイプとして解釈されませんか?
XSDは自分で変更するものではないことに注意してください。私は、XSDを使用して、XMLを適切に読み取って生成する必要があります。
私がこれを理解するのを手伝ってくれてありがとう!
-アンカ
java - @XmlJavaTypeAdapters でマークされた @XmlElements?
私はこの状況を持っています
したがって、複合は単純および/または複合の両方のリストです。どちらも次のように定義された値から拡張されます
Simple は、単純な文字列との間でマーシャリング/アンマーシャリングするアダプタでマークされたクラスです
コンパウンドはアダプター不要。
問題は、Simple を「そのまま」使用すると、次のように正しくマーシャリング/アンマーシャリングされることです。
しかし、コンパウンド内で使用すると、次のような出力が得られます
そして、私はなぜだろうと思っています...何かが恋しいですか?その「値」を削除するにはどうすればよいですか? @XmlElements 内でマークされたタイプでアダプターを使用することは可能ですか?
編集
いくつかのテストの後、Simple インスタンスの処理方法に問題がある可能性があることがわかりました。したがって、最初の質問を次のように単純化します。
次のような単純なクラスが与えられた場合
次のようなマーシャリングされた出力を取得するにはどうすればよいですか
それ以外の
?
xml - EclipseLinkのMOXyJAXB実装でJAXB2Basicsプラグインを使用できますか?そうでない場合、代替手段はありますか?
最終的には、JAXBでhashCodeとequalsの実装を生成する必要があります。JAXB2 Basicsプラグインはそれを行い、JDKのMetro JAXB実装では正常に機能しますが、MOXyでは失敗します。
私は得る:
java.lang.IllegalArgumentException at org.eclipse.persistence.jaxb.JAXBBinder.updateXML(JAXBBinder.java:131)at org.eclipse.persistence.jaxb.JAXBBinder.updateXML(JAXBBinder.java:126)
それ以外の場合、MOXyは正常に機能します。つまり、equalsおよびhashCode生成コードを削除すれば、すべてが正常に機能します。
validation - JAXBとエンティティクラスの検証
REST-Webサービスの場合、受信データを検証する必要がありました。xsdの代わりにエンティティクラスとJAXBを使用して受信データを検証することは可能ですか
java - java.util.Map プロパティの Jaxb 名前空間
ハッシュマップを含む単純なクラスがあります。
Main メソッドは、次の XML を生成します。
私が抱えている問題は、ハッシュマップを出力するときに名前空間が削除されることです。私が生成したいのは、次のようなxmlです。
spring - Spring 3、ReST、@ ResponseBody、@ ExceptionHandler
単純なSpring3ベースのReSTWebサービスで例外処理を機能させようとしています。私が見たすべてに基づいて、これが@ResponseBodyおよび@ExceptionHandlerアノテーションで自動的に機能するのを妨げるバグがあります
https://jira.springsource.org/browse/SPR-6902
Spring 3.1または3.0.6までサポートされていないことを考えると、例外処理を行うための現在の最良の方法は何ですか?私は多くの投稿を見てきましたが、私にとって有効な明確な答えを見つけられませんでした。理想的なソリューションは、xmlとjsonの両方を自動的にサポートするソリューションです。
- マーシャリング設定全体を手動で定義する必要がありますか?これにより、Spring 3の残りのサポートを使用する価値のある注釈の必要性がなくなりませんか?
- マーシャリング(つまり、Jaxb2Marshaller)を手動で定義するために、spring-wsへの新しい依存関係を追加する必要があるようです。これは少し面倒です。
- すべてのメソッドが返す「Response」オブジェクトを定義して、すべての関数をtry / catchブロックにラップする方が簡単ですか?
jaxb - Jaxb - SchemaGen と java.util.Map の名前空間の問題
クラスに java.util.Map が含まれている場合、SchemaGen は Map 要素に名前空間を持つ xsd を生成します。ただし、マーシャラーが同じクラスから xml を生成する場合、名前空間は存在しません。
これは XmlAdapter で解決できる可能性がありますが、マップごとに 3 つの追加クラスを作成する必要があるようです。多数のマップがあるため、このルートをたどりたくありません。
SchemaGen と Marshaller に同じ xml を生成させる方法はありますか?
クラスとスキーマの例:
テスト 1:
テスト 2:
SchemaGen の出力:
スキーマに準拠する XML。(注: jaxb はこの xml をアンマーシャリングしません!)
Jaxb が生成する XML。(注。スキーマに準拠していません!)
java - JAXB のルート要素のない XML
そのようなオブジェクトのリストがルート要素を必要としないようなオブジェクトを作成する方法があるかどうか疑問に思っていました。たとえば、次のような XML を作成したい場合
class Dogs
ルート要素になり、 を持つことができますList<Dog>
。ここで、カプセル化要素を取り除きたいとします<Dogs>
。犬のリストは次のようになります
クラスをどのように構築すればよいですか?