C ++对象的XML表示

时间:2009-06-23 01:17:45

标签: c++ xml

我正在尝试创建一个消息验证程序,并希望创建适用于某些消息类型的易于修改的规则。由于规则发生变化的风险,我决定在目标代码外部定义这些验证规则。

我创建了一个定义规则的基本界面,我想知道存储这些简单数据的最佳方法是什么。我倾向于使用XML,但似乎它可能太重了。

每条规则只需要一小组数据(即规则类型,值,适用的掩码等)。

有没有人知道我能看到的能够执行类似功能的好资源。我宁愿不深入研究一个似乎几乎不需要我在大多数实例中看到的功能子集的问题。

如果我能找到一个简明的例子来检查我是否可以决定是否只使用平面文件。

提前感谢您的意见!

4 个答案:

答案 0 :(得分:1)

就个人而言,对于小的,易于修改的XML,我发现TinyXML是一个优秀的库。您可以使每个类理解它自己的格式,因此您的对象层次结构直接在XML中表示。

但是,如果您认为不需要XML,则可能需要使用更轻的存储,例如yaml。我发现理解底层数据,修改它和扩展功能要容易得多。

(另外,boost::serialization有一个XML档案,但它不是我称之为易于修改的内容)

答案 1 :(得分:1)

最简单的方法是使用一个易于使用C ++>>解析的平面文件。运营商。只是用空格分隔的简单令牌。

答案 2 :(得分:1)

好吧,如果你希望你的规则是人类可读的,那么XML就是你要走的路,你可以使用xerces很好地与c ++接口。如果需要性能和/或大小,可以使用简单的结构将数据保存为二进制文件。

答案 3 :(得分:1)

实现此目的的另一种方法是在XML Schema中定义规则,然后使用XML Data Binding工具生成相应的C ++对象模型以及XML解析和序列化代码。一个这样的工具(我碰巧正在研究)是CodeSynthesis XSD:

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

有关该想法的2分钟概述,请参阅C ++ /树映射文档中的“Hello World”示例。