問題タブ [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.
jaxb - (ジャージー + ジャクソン) XmlAdapter
Map
可変バーを持つクラス Foo があります。ただし、要件として、オブジェクトとして表現できる必要があります。
そのため、GenericXmlAdapter を使用して、instanceof チェックを行い、Map アダプターを呼び出します。MapAdapter は、Map を、Map の要素の単なるリストである MapElementList に変換します。
コードは必要に応じて失敗します。つまり、GenericXmlAdapter が呼び出され、MapElementList が返されます。
しかし、悪名高いクラス MapElementList も、そのスーパークラスもこのコンテキストエラーに認識されていません
部分的な前進: MapAdapter は、シリアル化する必要がある Foo またはその他のクラスで参照されていません。そのため、MapAdapter の @XmlSeeAlso は役に立ちません。他の場所に追加する必要があります。どこ?が質問です。GenericXmlAdapter に追加しても役に立ちません。
コードの簡単な実行
次の GenericAdapter は、期待どおり Jackson によって呼び出されます
次の MapAdapter は、期待どおり GenericAdapter によって呼び出されています
次の MapElementList は Map のリスト表現です
以下は最終的にMapElementです
java - Java Web サービス - マップのマップ用の Jersey XmlAdapter
Jersey を使用する Java Web サービスがあります。今、マップのマップ (行と列) をクライアントに送信したいと考えています。
そのままにしておくと、すべて正常に動作します。しかし、XMLOutput は次のようになります...
でも、こういうのが欲しい…。
XML 出力を制御するために XmlAdapters を使用したいのですが、うまくいきません。
行を含むクラス:
列を含むクラス:
オブジェクトを適切にマーシャリングするには、XmlAdapter と Types をどのように記述すればよいでしょうか?
私はこのようなことをしました...しかし、次のXmlAdapterをどこに追加しますか?
行と列を含む MainClass
ここで、CoDataList と CoDataMap のアダプターを作成しました。
この時点で、例外が発生しています。
@XmlAttribute/@XmlValue は、XML.xmladapter のテキストにマップされる Java 型を参照する必要があります
どうすればいいのかわからないので、よろしくお願いします。ありがとうございました
java - XMLAdapter: 構成可能な日付形式
私は JAXB (および XSLT 用の少しの Saxon) を使用して XML データをアンマーシャリングしています。私の XML ドキュメントには、日付文字列値があります。
私はいくつかの調査を行い、XMLAdapter と @XMLJavaTypeAdapter を試しました。ここで StackOverflow に関する便利な Q&A を見つけました: jaxb unmarshal timestamp。SimpleDateFormat を含むそこで概説されているソリューションはうまくいくようです。
これが私の問題です。XML の日付文字列の形式は、ドキュメントごとに異なります。毎回異なる日付形式にすることができます。現在のシステム (このすべての XML 操作に置き換えています) では、データベース テーブルに日付形式があり、XML ドキュメントが解析されるときに取得および適用されます。手動で。1行ずつ。(これで、JAXB に置き換えた理由がわかりましたね!)
質問は次のようになります: XMLAdapter の SimpleDateFormat に渡される日付形式文字列を、さまざまなドキュメントに変更するにはどうすればよいでしょうか? そのようなことは可能ですか?日付文字列を文字列として読み取り、後で別の場所で日付に変換する運命にありますか?
編集:この質問を削除するつもりでしたが、賛成票が投じられたので、最終的に何をしたかについて適切な回答を書き出すと思います。誰かがさらに良い答えにつながる洞察を持っている場合に備えて、しばらくの間、私自身の答えを受け入れることを保留します。
annotations - jaxb、@ XmlElementsで@XmlJavaTypeAdapterを使用できますか?
次の注釈が与えられます
そして、いくつかの面白いレガシーロジックのために、Third.class用のアダプターを提供する必要があります。
ただし、ThirdAdapterが呼び出されることはありません。@XmlJavaTypeAdapterは@XmlElementsと互換性がありますか?または、これに対するより良い解決策はありますか?
java - JAXBXMLAdapterメソッドは例外をスローしません
ブール値をマーシャリングおよびアンマーシャリングするためにJAXBXMLadapterを使用しています。アプリケーションのXMLファイルには、C#アプリケーションからもアクセスできます。このXMLファイルを検証する必要があり、これはXSDを使用して行われます。C#アプリケーションは、ブールノードに「True」値を書き込みます。ただし、XSDでは「true / false」または「1/0」しか許可されないため、同じことが検証されます。そのため、XSDでブール値の文字列を保持しました。その文字列はXMLAdapterによって検証され、マーシャリングとアンマーシャリングが行われます。XMLアダプタは次のとおりです。
上記のコードは通常の状態で機能しますが、無効なデータ(例:"abcd"または"")がxmlファイルから読み取られると、 "throw new Exception();" は伝播されず、Unmarshalプロセスは次のノードの読み取りに進みます。例外がスローされたらすぐにアプリケーションを停止したい。私の例外は食べ尽くされているようです。どんな助けでも大歓迎です。
この問題を解決するにはどうすればよいですか?
java - JAXBマッピング可能なXML要素
私のxiスキーマのroot.classでは、要素itemオブジェクトとohterオブジェクトはitemListの一部です。
私はObjectFactory.class
メインスキーマから次のようなJAXBElementsとしていくつかのアイテムを持っています:
したがって、numItemTypeには、のいくつかの属性とvalue(num)がありJAXBElement
ます。
NumItemType.class:
ただしJAXB
、ドキュメントを非整列XML
化すると、次のような要素のみが含まれます。
私がそれをマーシャリングすると、それは(JAXB javaコードのように)次のようになるはずです:
したがって、NumItemTypeAdapterを使用してnumItemTypeAdapter.classを記述し、XmlAdapterを拡張しました。
AdaptedNum.class:
http://blog.bdoughan.com/2012/02/xmlanyelement-and-xmladapter.html助けになると思いましたが、少し注意が必要です:-/
xml - 要件にJAXBXMLアダプターを使用する方法として混乱しています
リクエストがUIからサービスクラスに送信されるアンマーシャリングプロセスにJAXBを使用しています。以下は、XMLリクエストの形式です。
私の要件は、Specifier属性が複数の一連の値(:コロンで区切られている)を持っていることです。各一連の値をカスタムJavaクラスにマップする必要があります
私はこのように試しました
Specifier.java
SpecifierAdapter.java
編集部分
クラスSpecifierには3つのStringプロパティがあります。
たとえば、各シリーズの指定子が必要です(value1a、value1b、value1c)は、それぞれvalue1、value2、value3にマップする必要があります
編集パート3
こんにちは、 応答をありがとう、私はこの例をアンマーシャリングしようとしました、私が見つけたのはそれです、私はnullを取得しています
これは私が渡したリクエストです
私のSpecifierクラスが正しいかどうかを確認したいだけですか?(ここでは注釈を使用しなかったため)
annotations - @XmlJavaTypeAdapter 非整列化オブジェクトが null です
私の質問は、jax-ws は @XmlJavaTypeAdapter に関連付けられた非整列化コードをどのように生成するのですか? クライアント コードにアダプター クラスが表示されません (代わりに、適応したオブジェクトに分割されます)。では、クライアントは、Web サービス メソッドが呼び出されたときに、返されたマーシャリングされた応答をアンマーシャリングする方法をどのように知るのでしょうか?
詳細:
Map<> を ArrayList に変換するために、別の @XmlJavaTypeAdapter アノテーション内で @XmlJavaTypeAdapter アノテーションを使用しています。マーシャリングされた結果はうまくいきます。ただし、jax-ws で生成されたクライアントは、結果をアンマーシャリングできないようです。代わりに、null オブジェクトを取得するだけです。
クライアントに送信される XML は次のとおりです。
WsRefDataOject のアダプタ クラスは次のとおりです。
ReferenceDataEntry 非整列化コード (Map のオブジェクト) にも同じロジックを使用します。
}
マーシャル コードにブレークポイントを設定し、それをサービスでステップ実行できます。ただし、非整列化コードがいつどこで保存/呼び出されるかはわかりません。アダプター クラスはクライアントで生成されないため、返された xml を非整列化する方法をクライアントがどのように知っているのかわかりません。
生成された WsRefDataObject クラスと生成された ReferenceDataEntry クラスを次に示します。
クライアントで null オブジェクトの原因について何か考えはありますか?
xml - JaxB 変換 XML スキーマ
http://jeungun.wordpress.com/2009/09/18/binding-to-dynamically-generated-form-elements-in-spring-mvc/で与えられたものを使用しました。
その出力を jaxb を使用して xml に変換しています。上記の例では配列リストが返されるため、出力は次のようになります。
しかし、私は以下のような出力が欲しい、
jaxbを使用してこれを達成するにはどうすればよいですか?
以下のコードを使用しました:
java - JAXBは、XmlAdapterによって作成されたArrayListをマーシャリングします
HashMap
を使用してフィールドのXML表現を適応させたいXmlAdapter
。私はそれを行うためにを使用ArrayList
します。ただし、マーシャリングする場合ArrayList
は、まったくマーシャリングされません。何故ですか?
コード
結果