問題タブ [xmladapter]
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 XmlAdapterをどのように使用できますか?
このクラスのインスタンスはラージ オブジェクト グラフの一部であり、オブジェクト グラフのルートにはありません。
オブジェクト グラフは、Jersey と JAXB を使用して JSON に変換されます。とにXmlAdapter
登録しました。LocalDate
LocalTime
問題は、date
プロパティではなくプロパティに対してのみ機能することtimes
です。times
これは、単一の値ではなくリストであるという事実と関係があると思われます。times
では、Jersey/JAXB に、登録された .xml を使用してリスト内の各要素をマーシャリングするように指示するにはどうすればよいXmlAdapter
でしょうか?
アップデート:
スカラープロパティを追加し、JSON で予想される出力を観察することで、スカラー プロパティLocalTime
に対してマーシャリングが実際に機能していることを確認しました。LocalTime
LocalTime
完全を期すために、package-info.java は次のとおりです。
LocalDateAdapter
:
LocalTimeAdapter
:
jaxb - ArrayListを処理するためのXmlAdapterの拡張は、[...]を引用符で囲みます
(のみ)1つの要素を持つリストを正しくシリアル化できないJerseyのバグを解決するには、次のようにします。
それ以外の
私はそれをほぼ解決する以下のコードを書きましたが、(腹立たしいことに)結果全体を次のように二重引用符で囲まないように指示する方法はありません:
私には選択肢がなく、これを通してはっきりと見える人には心から感謝します。いくつかの投稿で提案されている@ProviderソリューションとしてContextResolver<JAXBContext>も試しましたが、Jerseyがそのコードを呼び出すことはありません。このソリューションだけが近づいています。
ちなみに、POJOの消費フィールドは次のとおりです。
そしてここにコードがあります:
java - JAXB XMLAdapter マーシャリングの問題
XML
を使用して以下の形式のファイルを生成する必要があります。これには、固定と可変JAXB2
の両方のxml コンテンツが含まれています。
制約とは何ですか?
可変XML
部分のコンテンツは、固定コンテンツに埋め込む必要がある5 つの異なるXML schema
(それを生成するために 5 つの異なる Java クラスを実装する予定です) のいずれかである必要があります。JAXB2.0
XML
XML 形式:
何を試しましたか?
JAXB
上記のアノテーション付き Java クラスを作成しましたXML metadata
。BaseUserType
変数 XML 部分には、 5 つの異なる Classes によって拡張された共通の Parent クラス ( ) を使用しました<user_type>
。marshall(..)
を使用して操作をオーバーライドしようとしました@XmlJavaTypeAdapter
。(以下のように)
JAXB アノテーション付きクラス:
カスタム XML アダプター クラス:
私は今どこに苦労していますか?
エラーや警告に直面していませんXML
。生成されています(以下に示すように)。しかし、出力は期待されたものではありません。Variable XML 部分が Fixed 部分に正しく埋め込まれていません。
出力
私の質問は:
- なぜ は、マーシャリングされたコンテンツを親コンテンツ
JAXB marshallers
に埋め込むことができませんでした。CustomXMLAdapter
(UserInfo.class)
- これを単純に行うための代替オプションはありますか?
JAXB
- の指定方法
BoundType
_ コンテンツを親クラスのマーシャリングに埋め込むために指定する特定のタイプはありますか?ValueType
XMLAdapter
java - JAXB XmlAdapter を使用して、ラッパー要素なしでリスト全体を適応させる
カスタムコレクション型XmlAdapter
にアンマーシャリングするために を使用しようとしています (クラスの別の使用によって課された競合する制限のために、意図的にインターフェイスを実装しません。クラスにコレクションが含まれている場合、残念ながら失敗します)。問題は、コレクションに配置されるノードがラッパー要素にラップされていないことです。XML
Collection
XML
これが私のXML
基本的な外観です。
JAXB
これを次のように非整列化できますPOJO
:
ただし、私がやりたいことは次のとおりです。
ご覧のとおりXmlAdapter
、個々の要素ではなく、リスト全体を適応させる を作成しましたが、アンマーシャリングのために呼び出されることはありません。(マーシャリングのために呼び出されます。)
XML
要素の周りにラッパーが含まれている場合、<bar>
これを解決する方法を知っています:
bars
フィールドに注釈を付けることができ@XmlElement(id="wrapper")
、アダプターが正しく呼び出されるためです。ただし、XML
スキーマは から来ており、RFC
完全に変更できないため、どのように進めればよいか困っています。どんなアイデアでも大歓迎です!
jaxb - 親要素のないJAXBマーシャル
JavaBean A と B の 2 つと、String C と D の 2 つがあります。構造は次のとおりです。
オブジェクト A を Xml にマーシャリングできます
場合によっては、このように A を XML にマーシャリングしたいと思います
Bタグなし。XMLAdapter またはその他の方法で実行できますか。いくつかの動的な方法があれば最高です。ありがとう。
java - XmlAdapter を書くことは可能ですか??
つまり、Web サーバーでのシリアル化時に、org.jbpm.graph.def.ProcessDefinition クラスのすべてのインスタンスの processDefinition フィールドを null に設定したいので、CXF Web サービスから値を返すたびにこの例外が発生しないようにします。
尋ねる理由は、私はすでに以下のクラスを書いているからです
package-info.java ファイルで次のように定義しました。
ただし、そのメソッドは呼び出されません。