問題タブ [xstream]
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.
c++ - XSTREAMと同様のC++シリアル化クリーンXML
設定をXML形式で保存し(手作業で簡単に編集できるように)、ソケットとHTTPを介してXMLメッセージを介して既存のアプリと通信するLinuxc++アプリを作成する必要があります。問題は、私を助けるインテリジェントなライブラリを見つけることができなかったことです。非常に単純なメッセージを書き込んだり読んだりするためだけにDOMまたはSAXコードを書く気は特にありません。
Boost Serializationはほぼ一致しましたが、生成するxmlに多くのBoost固有のデータが追加されます。これは明らかにインターチェンジ形式ではうまく機能しません。BoostSerializationまたは他のc++シリアル化ライブラリでクリーンなxmlを生成できるかどうか疑問に思っています。バージョン属性など、必要な追加の属性があるかどうかは気になりませんが、それらの名前を制御し、使用しない「機能」を削除できるようにしたいと思います-tracking_levelとclass_id for実例。
理想的には、Javaのxstreamに似たものが欲しいだけです。私は、C ++には内省がなく、したがって手動でコーディングする必要があるという事実を認識しています。しかし、単純なXMLを恨みなく読み書きするだけのクリーンなソリューションがあれば、それは素晴らしいことです。
これができない場合は、XMLスキーマが正規のリソース(最初にコントラクト)であるツールにも興味があります。これは、C++に代わる優れたJAXBです。これまでのところ、CodeSynthesisXSDのような商用ソリューションしか見つかりませんでした。私はオープンソースソリューションを好みます。私はgSoapを試しましたが、それは本当に醜いコードを生成し、SOAP固有でもあります。
必死になって、私はプロトバッファの代替シリアル化フォーマットも検討し始めました。これは存在しますが、Javaの場合のみです。プロトコルバッファがXMLよりもサポートされているデータ交換形式の方が優れているように思われることに本当に驚いています。
私はこのアプリのライブラリを見つけるだけで怒ってしまいます。本当にいくつかの新しいアイデアが必要です。誰?
java - XStream で不要なエスケープを無効にするにはどうすればよいですか?
デフォルトでは、XStream は不必要にエスケープします>
..."
など。
これを無効にする方法はありますか (エスケープするだけです<
, &
)?
eclipse - 基本的な XStream アノテーション
XStream 注釈を使い始めたばかりで、注釈を XStream オブジェクトに関連付ける方法を見つけようとしています。ドキュメントから、これが受け入れられている方法のようです:
これに関する私の問題は、Eclipse がこれを有効な方法として認識していないことです。XStream オブジェクトにある残りのメソッドが表示されるため、Eclipse ではすべてが正しく構成されているようです。Eclipse が xstream の古いバージョンであると考えているようです。
Project > Clean を Eclipse 内で実行しようとしましたが、何も修正されませんでした。また、XStream jar を再度ダウンロードしようとしましたが、どちらも役に立ちませんでした。
バージョン: XStream 1.3.1、Eclipse 3.4、Java 6
この奇妙な動作を以前に見たことがありますか、またはそれを修正する方法について何か考えがありますか?
java - Linux での xstream と ibm j9 SDK の非互換性
xstream と IBM J9 jdk (32 ビット バージョン) との非互換性に遭遇しました。Sun jdk を使用した場合はすべて正常に機能しましたが、IBM jdk では失敗しました (Linux のみ。Windows では両方の jdk で問題ありません)。
デバッグ時に、xstream が内部で java.util.TreeSet を使用しているが、セットの反復子が間違った順序で要素を返すというエラーが表示されます (これは非常に奇妙に聞こえると思いますが、これは私が見た動作です)。関連するバグをグーグルで検索しても、意味のある結果は得られませんでした
可能な限りほとんどすべてのコンポーネントをアップグレードしようとしましたが、うまくいきませんでした。次の構成を試しました。
- ibm jdk 1.6 SR 7 (WebSphere 7.0.0.9 にバンドル)、xstream 1.2.2
- IBM jdk 1.6 SR 8、xstream 1.2.2
- IBM jdk 1.6 SR 8、xstream 1.3.1
(TomcatとWebSphereサーバーの両方で試したので、実際にはIBM jdkを使用した6つの構成があります)。
問題のコードは classcom.thoughtworks.xstream.core.DefaultConverterLookup
の 44 行目付近にあります。class のイテレータcom.thoughtworks.xstream.core.util.PrioritizedList
を使用し、カスタム コンパレータを使用しますが、コンパレータが行うのは整数 (優先順位) の比較だけです。
誰もこれを見たことがありますか?私は何をしたり変更したりできますか?
java - XStream での属性を持つ XML テキスト要素のデシリアライズ
基本的には、この質問の逆をやりたいと思っています。
Microsoft の Bing バッチ ジオコード サービスから XML を取得しています。一部の要素は次のようになっています (ここから盗み出されています)。
<Link>
要素には属性とテキスト コンテンツがあることに注意してください。私がデシリアライズしようとしている関連するPOJOクラスは次のとおりです。
私の現在の構成 (クラスはエイリアス化され、属性は自動検出され、その他すべて) では、XStream は要素のName
およびRole
属性を適切に逆シリアル化します<Link>
が、実際のリンク テキスト自体は逆シリアル化しません。
XStream でそのテキストをオブジェクトのString
フィールドにデシリアライズするにはどうすればよいですか?Link
このためだけに、リンクテキスト*の周りに新しい要素を手動で挿入する必要はありません。
*例: 置き換え
と
java - XStream-オブジェクトのコレクションとしてのルート
私はこのようなXMLペイロードを消費しています(より包括的な例については、http://api.shopify.com/product.htmlをチェックしてください)。
現在、私のコードは機能しますが、実際には本当に「間違っている」ように見えることを実行しています。つまり、「製品」をList.classに関連付けています。したがって、関連するコードは次のようになります。
これは問題ありませんが、そのxstreamインスタンスを使用してオブジェクトを外部化する場合は、もちろん常に「製品」を使用しますが、これは私が望んでいることではありません。
ジェネリックコレクションをタグにマッピングできるようにしたいと思います。
または、次のスニペットを機能させますが、現時点では機能しません。
ShopifyProductをラップするためにShopifyProductResponseクラスを作成しましたが、次のようなことは何もありません。
com.thoughtworks.xstream.mapper.CannotResolveClassException:製品:com.thoughtworks.xstream.mapper.DefaultMapper.realClass(DefaultMapper.java:68)の製品com.thoughtworks.xstream.mapper.MapperWrapper.realClass(MapperWrapper.java:38) )。
追加した場合:
当時は消えていました...したがって、マッパーラッパーがここで定着していないように見えます-おそらくShopifyProductResponseオブジェクトを探し、代わりにリストを見つけたためです-私は本当に知りません。
java - XStreamを使用したJavaオブジェクトのXMLへのシリアル化
問題は、mainメソッドを実行するたびに、a.xmlの古いコンテンツが失われ、新しいコンテンツに置き換えられることです。以前の情報を失うことなくコンテンツをa.xmlファイルに追加するにはどうすればよいですか?
java - XStream からの警告、XStreamImplicit で itemFieldName が見つかりません
警告の原因を突き止めようとしています:
関連するコードは次のとおりです。
XStream JAR を見ると、次のように表示されます。
そのため、なぜ警告が表示されるのかよくわかりません。問題が発生しているようには見えませんが、コンパイラの出力にこれらのエラーが多数表示されるので、それらを整理したいと思います。
編集:さらに掘り下げて、これを見つけました:http://java.dzone.com/articles/when-good-annotations-go-bad「ファブリツィオ」からのコメントを見てください
うーん....多分私も急いで答えていて、よく理解していませんでした...しかし、Aで注釈が付けられたクラスC1をコンパイルしたら、C1をコンパイル(および実行)することができます。 A を C2 クラスパスに入れる必要のない C2 のクラスパス。
javax.persistence アノテーションを含む JAR に対してサンプル クラス X をコンパイルして、再確認しました (ただし、コンパイラ クラスパスに jpa.jar を配置しません)。
istral:/tmp> javac -classpath it-tidalwave-catalog.jar X.java it/tidalwave/catalog/persistence/CategoryPB.class(it/tidalwave/catalog/persistence:CategoryPB.class): 警告: 注釈メソッドが見つかりません 'タイプ 'javax.persistence.Table' の name()': javax.persistence.Table のクラス ファイルが見つかりません it/tidalwave/catalog/persistence/CategoryPB.class(it/tidalwave/catalog/persistence:CategoryPB.class): 警告: タイプ 'javax.persistence.Column' で注釈メソッド 'length()' が見つかりません: javax.persistence.Column のクラス ファイルが見つかりません it/tidalwave/catalog/persistence/CategoryPB.class(it/tidalwave/catalog/persistence: CategoryPB.class): 警告: タイプ 'javax.persistence.Column' で注釈メソッド 'name()' が見つかりません
など...警告のみ、コンパイルは成功しました。
だから、これは単なる注釈/クラスパスの問題だと思います。
java - ジェネリック コレクションと XStream
List<Person>
たとえば、 to<friends>
とList<Things>
toを(xstream を使用して) マップする方法はあり<stuff>
ますか?
ありがとう!
java - XStream を使用して、この形式の XML からオブジェクト (ハッシュマップ) を (逆) シリアル化します
XML:
JAVA ハッシュマップ: map = {key1=text1,key2=text2}
これは機能しません。なぜ?