题
我正在尝试创建一个消息验证程序,并希望创建适用于某些消息类型的易于修改的规则。由于规则发生变化的风险,我决定在目标代码外部定义这些验证规则。
我创建了一个定义规则的基本界面,我想知道存储这些简单数据的最佳方法是什么。我倾向于使用XML,但似乎它可能太重了。
每条规则只需要一小组数据(即规则类型,值,适用的掩码等)。
有没有人知道我能看到的可以执行类似功能的好资源。我宁愿不深入研究一个似乎几乎不需要我在大多数实例中看到的功能子集的问题。
如果我能找到一个简明的例子来检查我是否可以决定是否只使用平面文件。
提前感谢您的意见!
解决方案
就个人而言,对于小的,易于修改的XML,我发现 TinyXML 是一个优秀的图书馆您可以使每个类理解它自己的格式,因此您的对象层次结构直接在XML中表示。
但是,如果您认为不需要XML,则可能需要使用较轻的存储空间,例如 yaml 。我发现理解底层数据,修改它和扩展功能要容易得多。
(另外, boost :: serialization 有一个XML档案,但它不是我称之为易于修改的内容)
其他提示
最简单的方法是使用一个易于使用C ++>>解析的平面文件。运营商。只是用空格分隔的简单令牌。
好吧,如果你希望你的规则是人类可读的,那么XML就是你的选择,你可以使用 xerces 。如果需要性能和/或大小,可以使用简单的结构将数据保存为二进制文件。
实现此目的的另一种方法是在XML Schema中定义规则,然后使用XML Data Binding工具生成相应的C ++对象模型以及XML解析和序列化代码。一个这样的工具(我碰巧正在研究)是CodeSynthesis XSD:
http://www.codesynthesis.com/products/xsd/
有关该想法的2分钟概述,请参阅“Hello World”; C ++ / Tree映射文档中的示例。