質問

メッセージ検証プログラムを作成しようとしていますが、特定のメッセージタイプに適用される簡単に変更可能なルールを作成したいと考えています。ルールが変更されるリスクがあるため、オブジェクトコードの外部でこれらの検証ルールを定義することにしました。

ルールを定義する基本的なインターフェイスを作成しましたが、この単純なデータを保存する最良の方法は何だろうと思っています。私はXMLに傾いていましたが、重すぎるようです。

各ルールに必要なのは、非常に小さなデータセット(つまり、ルールのタイプ、値、適用可能なマスクなど)だけです。

同様の機能を実行する、私が見ることができる良いリソースを誰もが知っていますか。私がぶつかるほとんどの例で見られる機能のサブセットをほとんど必要としないと思われる問題について、XMLを深く掘り下げたくないのです。

調べるための簡潔な例を見つけることができれば、フラットファイルをそのまま使用するかどうかを決定できます。

ご意見をお寄せいただきありがとうございます!

役に立ちましたか?

解決

個人的に、簡単に変更可能な小さなXMLの場合、 TinyXML が優れたライブラリ。各クラスに独自の形式を理解させることができるため、オブジェクト階層はXMLで直接表されます。

ただし、XMLが必要でないと思われる場合は、 yaml 。基礎となるデータを理解し、修正し、機能を拡張する方がはるかに簡単だと思います。

(また、 boost :: serialization にはXMLアーカイブがありますが、私が簡単に変更できるとは言えません)

他のヒント

最も簡単なのは、C ++を使用して解析しやすいように設計されたフラットファイルを使用することです>>オペレーター。空白で区切られた単純なトークン。

まあ、もしルールを人間が読めるようにしたいなら、XMLが道であり、 xerces 。パフォーマンスやサイズが必要な場合は、単純な構造体を使用してデータをバイナリとして保存できます。

これを実装するもう1つの方法は、XMLスキーマでルールを定義してから、XMLデータバインディングツールに、XML解析およびシリアル化コードとともに対応するC ++オブジェクトモデルを生成させることです。そのようなツールの1つ(たまたま作業中です)はCodeSynthesis XSDです:

http://www.codesynthesis.com/products/xsd/

アイデアの2分間の概要については、「Hello World」をご覧ください。 C ++ / Treeマッピングドキュメントの例。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top