問題タブ [xmlmapper]
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.
xml - Jackson/Woodstox XML エンコード文字解釈
Jackson と Woodstox を使用して (ドキュメントの推奨に従って) 読み取り、編集、書き込みを行うための指示が記載された XML ファイルを受け取りました。ほとんどの場合、これはそれほど難しいことではありません。彼らは両方とも、それが何をするかについてかなり上手です。ただし、この時点で、問題に遭遇しました。
XML オブジェクト自体に XML オブジェクトが含まれています。例えば:
XML ファイルを Jackson アノテーション付きの Java オブジェクトに読み込んだ瞬間、 と のすべてのインスタンスが、Woodstox によってそれぞれ と<
に>
変換されます。オブジェクトを XML ファイルとして書き戻すと、<
>
<
<
>
>
ファイルを読み取ろうとしている私のメソッドの最も単純なバージョンは次のとおりです。
上記の例では、Jackson がアノテーションを付けた Java オブジェクトは次のようになります。
最後に、私の依存関係は次のようになります。
これは、Jackson が Woodstox の BufferingXmlWriter を使用したために発生しているようです。この特定のライターは、これらの文字をインターセプトしてエンコードしますが、その決定を回避する方法はないようです。
最後に問題を要約すると、XML ファイルが与えられました。その XML ファイルには、XML を壊さないようにエンコードされた ( および ) 記号 ( および ) を含む属性と要素が含まれてい<
ます。Woodstox がファイルを読み取るとき、XML に含まれる実際の文字列を Java オブジェクトに渡す代わりに、文字をデコードします。書き込み時に、のみとして再エンコードされます。これは、Jackson が Woodstox の BufferingXmlWriter を使用しているため、これらの文字のエンコードを回避するように構成できないように思われるため発生しているようです。>
<
>
<
<
その結果、私の質問は次のとおりです。
Woodstox XML リーダーを使用するように Jackson オブジェクトを構成して、XML ファイル内の文字をさらにエンコードせずに読み書きできるようにすることはできますか?それとも、自分のニーズに合わせて別のソリューションを検討する必要がありますか?
android - XmlMapper 例外を修正する方法 - java.lang.VerifyError: com.fasterxml.jackson?
これを実行しようとしたときに問題が発生しましたjackson-dataformat-xml-2.8.5.jar
:
次の例外をスローします
私が調査したところ、Jackson 1.3 で導入されたバイナリ非互換性に関係しています。Tatu Saloranta が彼の古いブログで述べているように、残念ながらオンラインではありません。
少なくとも「非ベータ」リリース (1.0 以降) については、常に互換性を非常に高く評価してきました。その結果、どの 1.x リリースも以前のリリースよりも単純なプラグ アンド プレイになるという考えがありました。これは、パッチ リリースでは機能します。しかし、すべてのマイナー リリースがこのように機能しているわけではないことがわかりました。たとえば、バージョン 1.2 と 1.3 には予期しない非互換性があります。
問題はこれです: ほとんどの場合、バイナリ互換性はソース互換性よりも難しい目標ですが、つまり、ソース互換性を壊すと、バイナリ互換性を壊すことがほぼ保証されますが、厳密にはそうではありません. 具体的には、ソース互換性はあるがバイナリ互換性がない特定の変更を行うことは十分に可能です。
具体的な例としては、何も返さないメソッド (「void メソッド」) を何かを返すメソッドに変更しても、コンパイルは中断されません。しかし、実際にはバイナリ互換性が損なわれます。うーん。
これはまさに、構成メソッド呼び出しの連鎖を可能にするために、ObjectMapper を「流暢な」パターンに従わせるとよいと判断したときに起こったことです。この「隠された」API の変更がなければ、これは素晴らしいことです...
私はAndroid開発にかなり慣れていないので、これを修正する方法がよくわかりません。
からの依存関係のリストでわかるように、私はすでに全面的に同じバージョンの Jackson を使用していることを確認しましたapp/build.gradle
。
公式のFasterXML Jackson github ページによると、私が使用している拡張機能はサポートされている必要があります...
XML: XML をサポートします。ストリーミングとデータバインドの両方の実装を提供します。JAXB の「コード優先」モードに似ています (「XML スキーマ優先」はサポートされていませんが、JAXB Bean を使用できます)。
この問題は、プロジェクトの github ページでも報告されましたが、実際の解決には至りませんでした。-- github.com/FasterXML/jackson-dataformat-xml/issues/116
更新jarjar
:次の依存関係で使用しました:
また、すべての依存関係を最新バージョンと myappcompat
およびsupport
api にアップグレードしました。
エラーが続く -
うまくいけば、誰かがこれに光を当てることができますが、何が原因なのかわかりません...
java - 整数の場合、文字列値から逆シリアル化する文字列引数コンストラクタ/ファクトリ メソッドはありません
次のxmlをオブジェクトに逆シリアル化しようとしています:
私のクラスは次のとおりです
私のマッパーの依存関係は次のとおりです。
}
これは、xmlMapper によって例外がスローされた失敗したテストです。
[ソース: out/test/resources/test.xml; 行: 4、列: 16] (参照チェーン経由: service.Foo["dean"]->service.Dean["bar"]->java.util.ArrayList[0])
例外を読むと、マッパーが値 28 を整数ではなく文字列として扱っているように見えますが、Bar クラスを次のように変更し、要素 bar の属性を生の xml に追加すると、同じテストに合格します。
マッパーはコンストラクターのパラメーターの型から型を推測し、そのオブジェクトを文字列値でインスタンス化し、フードの下で Integer.valueOf("28") のようなことを行う必要があると思います
java - @JacksonXmlProperty(isAttribute = true) Jackson XmlMapper を使用して一意の ID を追加する
こんにちは、jackson-dataformat-xml 2.7.3 XmlMapper を使用して POJO を xml に変換しようとしています。以下のコードに示すように、POJO クラスで jackson アノテーションを使用していますが、リストの各タグにいくつかの一意の ID が追加されています。これらの一意の ID を削除するにはどうすればよいですか。
// 以下はElementTag クラス
// 以下はProfessionalLeadDetails クラス
// main メソッド内で XmlMapper を使用して xml に変換
しかし、以下に示すように、zdef1999262822: のように val の前にいくつかの一意の ID が追加されています: OUTPUT
望ましい出力:
前もって感謝します!
java - XMLを解析するときの改行エラーを修正する方法
データを含む XML ファイルがあります。私はそれを解析するためにFasterXMLを使用しています:
そして、ファイルの形式が次の場合:
このファイルを解析すると、すべて動作します。void タグ t を使用する場合、ex. ファイルの形式が次の場合:
すべての仕事。しかし、フォーマットがある場合:
エラーが発生します。両方のオプションが機能するようにします。修正方法は?
swift - xml をオブジェクトに変換できません - Swift4
次の XML 文字列があります。XMLMapper (サードパーティ ライブラリ) で解析しようとしています。
の配列を作成する必要があります
xml は次のとおりです。
オブジェクトに解析するコードは次のとおりです。
要約すると、小数を randomDecimals 配列に入れる必要があります。しかし、私はそれを行う必要がありますXMLMapper
。
私は何を間違っていますか?
ブラジル、
アーデム