5

設定を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よりもサポートされているデータ交換形式の方が優れているように思われることに本当に驚いています。

私はこのアプリのライブラリを見つけるだけで怒ってしまいます。本当にいくつかの新しいアイデアが必要です。誰?

4

3 に答える 3

0

質問からの引用: 「これまでのところ、CodeSynthesis XSD のような商用ソリューションしか見つけられませんでした。オープン ソース ソリューションを好むでしょう」

CodeSynthesis XSDは、オープン ソース プロジェクトで使用できます。この製品には商用ライセンスがありますが、それに加えて、オープン ソース ライセンスもあります(GPL バージョン 2 ですが、追加の自由が与えられています)。http://www.gnu.org/licenses/license-list.htmlにリストされているすべての「GPL 互換フリー ソフトウェア ライセンス」およびすべての「GPL 非互換フリー ソフトウェア ライセンス」と共に使用することが許可されてい ます。

CodeSynthesis XSD の 3 番目のライセンス オプションは、小さな語彙の無料の専用ライセンスです。小さな XML スキーマを使用している場合は、そのライセンスを無料で使用できます。

さまざまな CodeSynthesis XSD ライセンスの詳細については、http: //www.codesynthesis.com/products/xsd/license.xhtmlをご覧ください。

機能面では、CodeSynthesis XSD は、生成されたバイナリ形式のシリアル化と解析もサポートしています。効率的なコミュニケーションのためにその形式を使用できます。

于 2012-06-29T18:30:26.063 に答える
0

Troubadour の回答をさらに拡張するために、私はQt の XML ライブラリを使用して、あなたに非常に近いことを行うことに大きな成功を収めました。私自身の場合、構成データをローカル ファイルにシリアル化し、ときどき他のスレッドにストリーミングします。

QXmlStreamWriterQXmlStreamReaderは、問題の 2 つのクラスです。 これらを使用した例を次に示します。

私自身の XML シリアライゼーションでは、生成される実際のフォーマットを完全に制御でき、達成するのに数百行のコードしかかかりませんでした。Qt の XML を使用することについて私が言える最も良い点は、コンテンツに集中でき、データをマークアップする面倒な作業をライブラリに任せることができるということです。これは理想的です。

最後に、Qt ライセンス (商用、GPL、LGPL) に関する情報をいくつか示します

于 2010-05-21T15:31:27.643 に答える
0

それが何を提供するのか正確にはわかりません。したがって、それがあなたが探しているものであるかどうかはわかりませんが、Qtにはxmlモジュールがあります。それはまた、あたかもそれがあなたに役立つかもしれないかのように聞こえるネットワークモジュールを持っています.

于 2010-05-21T10:26:13.777 に答える