問題タブ [oxm]
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 HashMap マップ不可
POJO クラスの HashMap を XML に変換したいと考えています。XmlAdapter を使用してみましたが、HashMap のキーと値のペアのみが XML 要素の属性になります。Key を Element 自体にする必要があり、HashMap の値を要素の値にする必要があります。たとえば、次の XML が必要です。
次のクラスを作成しました。 MyMapType は、Key と Value という 2 つのフィールドを持つ MyMapEntryType クラスのリストを保持します。Key 要素を @XmlElement に変更し、値フィールドを Key フィールドに割り当てるにはどうすればよいですか?
ここに私のソースファイルがあります。
MyMapType.java
MyMapEntryType.java
アダプタークラスも見つけてください:
MyMapAdapter.java
これは、HashMap フィールドを持つクラスです。
XmlElementMap.java
これを達成する方法についてアドバイスしてください。
よろしく、-
アナンド
現在、次の出力が生成されます。
jaxb - JAXB-Eclipselink:抽象「getter」をXMLにマッピング
JAXBのEclipseLink実装(2.3)を使用してPOJOをXMLにマップしていますが、次のユースケースで問題が発生しています。
マッピング自体を外部バインディングファイルで完全に定義しています。クラスAを次のように一時的に設定します。
クラスBの場合:
さて、マーシャリングすると、例外が発生します。「[x]という名前の重複プロパティがクラス[bar.B]で見つかりました」。これは、私の意見では、Aの抽象宣言に由来し、Bに継承されています。
BのアクセサタイプをFIELDに設定すると、このエラーが解消されます。残念ながら、これはオプションではありません。Bには、フィールドではなく計算値を返すマーシャル用の追加のプロパティがあるため、PROPERTYでスタックします。 (以下の作業:BのアクセサータイプをFIELDに設定し、追加のプロパティを@XmlPathアノテーションでマッピングします-ただし、コードにアノテーションは必要ありません)。
クラスBのアクセサタイプのPROPERTYで立ち往生していたので、次の試みは次のとおりでした。
抽象プロパティがBに継承されないようにするには、次のようにします。
このマッピングを使用しても同じことが起こります。
どちらの場合も、プロパティ'x'は無視されます。
私は今これにかなりの時間を費やしてきました-これを機能させることが不可能だとは想像できませんか?
現時点での私の回避策:
foo.Aを一時的なものとして残し、bar.BにアクセサータイプのFIELDを指定して(問題なくプロパティ'x'を取得します)、コードの注釈を使用してBの追加のプロパティをマッピングします。しかし、前に述べたように、私はこれを注釈なしで完全に解決したいと思います-誰かアイデアはありますか?ブレイズ?:)
よろしく、
--qu
java - 目的の XML アンマーシャリングをサポートするためにモデル クラスに注釈を付ける際に問題が発生しています
OXM フレームワークを使用して、RESTful API 呼び出しへの要求の HTTP POST ペイロードとして渡される次の XML のアンマーシャリングをサポートすることに興味があります。
OXM フレームワークを使用するのはこれが初めてで、モデル クラスに正しく注釈を付けるのに問題があります。私は Spring 3.0 と JAXB2 Marshaller を使用していますが、特定のマーシャラーの実装については無関心です。
質問:
1) 目的の XML 構造を反映するためにモデル クラスに注釈を付けるための最良の戦略は何ですか? 以下に、クラスに注釈を付ける方法の例を示しますClass has two properties with the same name "XXX"
。マーシャラーを作成しようとすると、XmlElements になります。
2) 注釈とクラスでサポートするために、どのような戦略を取ることができますか? 私は SpatialExtent をインターフェイスとして定義していましたが、GeoBoundingBox XmlElement を実装するクラスがこのインターフェイスを実装しました。これは Java では機能しますが、JAXB では機能しません。
3) マーシャリング/アンマーシャリングを簡素化するために、必要な XML を改善できる場所はありますか?
どんな助けでも大歓迎です!--ステファン
バックグラウンド:
使用したい XML の例を次に示します。
GeoBoundingBox と TimePeriod は、空間的および時間的範囲の唯一の可能なタイプではありませんが、まだ他のタイプを定義する必要はありません。
Spring パッケージ アノテーションを使用しています。
モデルクラスに注釈を付ける方法の例:
すべての XmlElements 注釈は、モデル オブジェクトを参照するクラス メソッド上にあり、すべての XmlAttribute 注釈は、データ型 (例: private String id
) を参照するクラス メソッド上にあります。
初期の XSD があります。
marshalling - nullフィールドを空のタグにマーシャリングするようキャスターに指示する方法は?
一部のフィールドを null に設定できるオブジェクトをマーシャリングしています。構成用の xml-mapping ファイルでキャスターを使用しています。私がマーシャリングしているクラスは次のようなものです:
...そして、次のようなマッピング ファイル:
フィールドがnullの場合、現時点で得ているもの(簡略化された例):
説明フィールドがnullであっても、結果のXMLに空のタグが必要です。
jaxb2 - JAXB(MOXy) - 1 つのモデル オブジェクトを異なるスキーマにマッピングする
1 つのモデル オブジェクト (例: GroupHeader) を異なるスキーマにマッピングする際に問題に直面しています。このスキーマはそれぞれ異なる名前空間を持っていますが、いくつかの複合型はそれぞれの構造がほぼ同じです。したがって、この要素を 1 つの Java オブジェクトにマップします。JAXBを使用してこれを達成することは可能ですか?
最初のスキーマ:
2 番目のスキーマ:
私の英語でごめんなさい:)
java - Spring DAO ベースのアプリケーションで xml を実装する方法は?
私のプロジェクトでは、JSF と SpringDAO と Web サービスを使用しました。XML を返すさまざまな Web サービスを呼び出しており、この XML を解析して使用する必要があります。だから私の質問は...私は何を使うことができますか?
デフォルトでSpringにチェックできるものはありますか? コンテンツを個別に解析し、コア Java コードで使用する必要がありますか? または他の何か...
この場合、何ができるでしょうか?
java - Spring: XML 文字列 (キャスター) のアンマーシャリング時の OXM エラー
私はSpring Integrationプロジェクトをやっています。アンマーシャリング トランスフォーマーを介して、XML 文字列を 1 つのチャネルに公開し、別のチャネルで Java オブジェクトを受信したいと考えています。
私のSpring構成では、これらのチャネルとBeanを使用しています:
単体テストでこれを試しているので、使用する自動配線チャネルがあります。
アンマーシャリングしたい Trade クラスは非常に些細な POJO です。
これが私のJUnitテストメソッドですが、3行目で例外が発生します:
そして最後に、スタックトレースは次のとおりです。
xstream - xstream によってマッピングされた出力 xml に特定のフィールドを追加する方法
XML にマップする POJO があります。そのためにXStreamを使用しています。
例えば:
対応する XML は、
しかし、私の要件は、最初に 1 回だけ、従業員リストと共に DATE フィールドを持つことです。このような、
XStream で生成された XML に個別の要素を追加する方法。日付と従業員のリストを含む POJO を使用してみました。日付はこのように何度か印刷されています。
java - さまざまなオブジェクトに動的にマップするように XStream を構成する
JSON を常に次の形式で送信する RESTful サードパーティ API を使用しています。
...
Java POJO にマップし直す必要がある応答オブジェクトはどこにありますか。たとえば、JSON には、Fruit
POJOにマップし直すべきデータが含まれていることがあります。
Employee
...また、JSON には、 POJOにマップし直すべきデータが含まれている場合があります。
したがって、RESTful API 呼び出しに応じて、次の 2 つの JSON 結果を 2 つのうちの 1 つにマップする必要があります。
残念ながら、このサード パーティの REST サービスが常に{ "response": { ... } }
JSON の結果を返すという事実を変えることはできません。しかし、そのようなresponse
バックを aFruit
またはEmployee
.
最初に、Jacksonを試してみましたが、あまりうまくいきませんでしたが、私が望んでいたほどには構成可能ではありませんでした。そのため、JSONをPOJOにマッピングするためにXStreamを使用しようとしています。JettisonMappedXmlDriver
これが私が持っているプロトタイプコードです:
残念ながら、これを実行すると例外が発生します。これは、2 つの異なる Java オブジェクトにxs.alias("response", ...)
マッピングしているためです。response
API が常に同じ「ラッパー」 JSON オブジェクトを送り返すという事実を回避するにはどうすればよいresponse
でしょうか? 私が考えることができる唯一のことは、最初に次のように文字列置換を行うことです。
しかし、これは醜いハックのようです。XStream (または別のマッピング フレームワーク) は、この特定のケースで私を助ける何かを提供しますか? 事前に感謝します。
java - XStreamを型付きリストにマップして戻すにはどうすればよいですか?
XStreamを使用してJSONをJavaオブジェクトにマップし直しています。次のようなJSON文字列を処理します。
更新:このJSONは次のように解釈できると思います:
このJSONは、オブジェクトを含む名前のないオブジェクトを表し
widgets
ます。次にwidgets
、オブジェクトには、他の名前のないオブジェクトの配列が含まれます。これらの名前のないオブジェクトにはそれぞれ、との2つのプロパティが含まれていwidget_name
ますwidget_type
。
Widget
これのそれぞれはwidgetlist
POJOに対応します:
上記のJSON文字列をにマップして戻したいのList<Widget>
ですが、クラスを正しくエイリアスする方法がわからないようです。
xs
マッパーをに変換widgetlist
するにはどうすればよいList<Widget>
ですか?前もって感謝します。