問題タブ [unmarshalling]
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 - JAXBを使用して空の要素を空の文字列にアンマーシャリングする方法
次のような擬似コードがあります。
そしてそれは次の出力を生成します(これは空の要素がそこにあるというある種のトリックですが、これは私のシステムでどのように機能するかなので、私の前の誰かがこれをこのように設定しました):
それは私にとっては問題ありません。しかし、私がそれをアンマーシャリングすると、空の文字列は正しくアンマーシャリングされませんが、korteはnullになります。空の要素を空の文字列にアンマーシャリングするjaxbを作成するにはどうすればよいですか?
JDK6バンドルjaxbを使用しています。
編集:
アルマ級は次のようになります(クラスの名前は変更されていますが、次のようになっています)。
java - @XMLRootElement を使用しない JAXB 部分非整列化要素
JAXBの部分非整列化の例を使用していますが、ルートレベルにない XML 要素を非整列化できません ( @XmlRootElement タグがないため)。私の例では、 purchaseOrder-Element の代わりに shipTo-Element を読み取ろうとしました。
通常、私は JAXBElement unmarshal(Source source,Class definedType) を使用しますが、例では UnmarshallerHandler と XMLFilterImpl を使用しているため、使用するクラスを Jaxb に指示する場所がわかりません。
私のエラー メッセージは次のとおりです。期待される要素は <{}comment>、<{}purchaseOrder>、<{}purchaseOrders> です
私はたくさんグーグルで調べましたが、まだ役に立つものは何も見つかりませんでした。
JaxB-Webpage のコード例を次に示します。
Main.java
}
スプリッター.java
}
プライマー.xsd
test.xml
xml - RESTEasy json JAXB アンマーシャリングの問題
私はPlayで小さなツイーターのようなアプリケーションを書いています!RESTEasy を使用した単純な REST API で。私は簡単なリソースを持っています:
この小さなラッパー クラスもあります。
クライアント側には、同様のラッパー クラスと、RESTEasy プロキシ作成用のクライアント側インターフェイスがあります。次のようになります。
データを取得するための私のコード:
そして、これは XML に対して完全に機能します。すべてのツイートは、本来あるべき姿で画面に出力されます。問題は、JSON を戻り形式として使用したいということです。リソースとプロキシの @Produces アノテーションを @Produces("application/json") に変更すると、次のエラー メッセージが表示されます。
私のクライアント側のラッパー:
そして、この問題を回避する方法がわかりません。ブラウザでリソースを手動で呼び出した場合の出力例:
XML:
JSON:
java - jaxb umarhalling の問題: 空の xml タグの属性を取得できません
JAXB を使用して、xml-soap 文字列を Java オブジェクトに非整列化する必要があります。XML には、属性が入力された空のタグが多数含まれています。たとえば、メッセージ内のほとんどの情報は次のように中継されます。
属性に興味があります。
問題: アンマーシャリング後にオブジェクトを検査すると、すべての空のタグ (上記のような) が Java オブジェクトで表現されていません (たとえば、null です)。塗りつぶされたタグのみ (たとえば、123 が Java オブジェクトに追加されました。おそらく、この動作は xml 標準に準拠していますが、私はまだ属性に興味があります。属性を取得する方法があるかどうか教えてもらえますか??
考えられる回避策: バインディング ファイルを使用してアダプタにバインドすることにより、各要素が null の場合にデフォルト値 ("") を指定します。しかし、単純型に対してのみこれを行うことに成功しました。
使用されているバージョン: Java 1.6 で jaxb 実装を使用しています。
どうもありがとう。
ワイブランド。
json - Jax-rs unmarshal json - カスタムタイプ
jax-rs を使用して、JSON をカスタム Java オブジェクトに手動でアンマーシャリングする方法がわかりません。
ブラウザから、次の JSON を使用して単純な put リクエストを送信しています。
サーバーには、この JSON を使用して Java オブジェクトのプロパティを出力する BlahResource があります。
Blah のソース コードは次のとおりです。
問題は、Blah.myDate が Joda 時間の LocalDate クラスであり、dayOfMonth、monthOfYear、および year のセッターがないことです。たとえば、これを実行すると、次の例外がスローされます。
これは私にとって完全に理にかなっています。問題は、タイプ LocalDate が検出されるたびに、JSON を LocalDate に変換するためにアダプター クラスが使用されるように、ある種のアダプターを作成する方法がわからないことです。
理想的には、次のようなことをしたい:
アップデート
現在、2 つの方法を試しましたが、どちらも機能していないようです。
1) ObjectMapper の使用
ObjectMapper のハンドルを取得し、デシリアライザーを追加するだけでよいようです。そこで、このプロバイダーを作成しました。驚いたことに、dserializer に LocalDateDeserializer という名前を付けました。Eclipse の自動修正インポートを行ったとき、Jackson が既に Joda の拡張機能を提供していることにショックを受けました。サーバーを起動すると、プロバイダーが見つかりますが、それ以外の場合、このコードは呼び出されないようです。
2) 私が試した 2 番目の方法は、@JsonDeserialize アノテーションをフィールドに直接指定することです。
これも呼び出されていないようです。
どうすればいいのかわからない。これは非常に基本的な問題のようです。
更新 2
逆シリアル化を使用するために Jackson を削除することを検討しています (ただし、Jersey ではかなりうまく機能します)。
私はすでにシリアライゼーションに flexjson を使用していましたが、デシリアライゼーションは flexjson と同じくらい単純なようです。これらの他のすべてのライブラリには、かなりの抽象化と不必要な複雑さがあります。
Flexjson では、ObjectFactory を実装する必要がありました。
最初に投稿した「アダプター」クラスに驚くほど似ています。そして、私のリソースメソッドは次のようになります:
java - JAXB でマーシャリングをデバッグするには?
マーシャリング中に次の例外が発生しました
[row,col]:[1,1127] が配置されている xml を参照してください。提案してください。
jaxb - JAXB でアンマーシャリングすると、javax.xml.bind.UnmarshalException (無効なバイト シーケンス) が発生します。
ここに私の問題があります: 入力として与えられた XML ファイルをアンマーシャリングするプログラムを書きましたが、私のプログラムは開発環境で問題なく動作することがわかりましたが、この同じプログラムはクライアントの環境で次の例外を生成します:
javax.xml.bind.UnmarshalException - リンクされた例外あり: [java.io.UTFDataFormatException: 2 バイト UTF-8 シーケンスのバイト 2 が無効です。]
私のプログラムへの入力として与えられた XML ファイルは、エンコーディング タイプとして UTF-8 を使用しています。Unmarshaller オブジェクトは、プロパティ値を設定していないため、デフォルトのエンコーディング タイプである UTF-8 を使用しています。その上、アンマーシャラーにスキーマを設定していないので、XML 検証を要求していません。
誰かがアイデアを持っていますか、または誰かがすでに同じ問題に遭遇しましたか?
前もって感謝します
java - データベースのXML出力をJAXB派生オブジェクトモデルにマップする方法
次の問題(Java / JAXBの初心者であり、PHPのバックグラウンドを持っているための問題)に役立つソース/資料へのリンクを要求しています。
組織によって作成および保守される複雑なXSDが提供されます。JAXB2.1を使用してJavaオブジェクトモデルを作成しました。データベースフィールドをjava/jaxb派生クラスにマップする必要があります。データベースのフィールド/要素は、単純なXML出力を介してレンダリングされます。XMLデータベースレコードの出力例は次のとおりです。
JAXB派生クラスの例:
<PROBLEM_DATE>
xml要素をproblemDateにマップするにはどうすればよいですか?私が始めるのを助けることができる記事/チュートリアルを教えてください。また、XMLデータベースの抽出は大きく、500近くのfields / xml要素がありますが、マッピングを自動化する方法はありますか、それともすべて手動で行う必要がありますか?
java - Jaxb - 1 つの xml 要素を複数のフィールドに非整列化するにはどうすればよいですか?
xml:
<root>
<element>value (something)</element>
</root>
この xml を Java クラスの 2 つの異なるフィールドに非整列化する必要があります。
以下を試しましたが、うまくいきませんでした。最初のフィールドには正しい値があり、2 番目のフィールドには null がありました。
ジャバ:
両方の値を保持し、それを「要素」にマップするクラスを作成せずに、どうすればこれを達成できますか?