我打算将XML解析添加到我正在处理的项目中。这将需要允许软件不仅加载和保存设置,还需要在需要时调用功能。
我可以看到加载和保存设置不是问题,但是,需要触发的异步事件可能有点棘手。
将远程驱动应用程序,并且需要触发事件,例如开始播放。这应该使用XML来完成。
我可以看到这样做的一种方式如下所示。对于每个元素,XML将包含Settings和Signals。对于加载和保存,不需要信号,只需要设置。但是,如果需要调用信号,则其值将设置为1并且时钟将被切换。
<SomeElement>
<Settings>
<setting1 value="1"/>
<setting2 value="2"/>
</Settings>
<Signals>
<clock value="0"/>
<Signal1 value="1"/>
</Signals>
</SomeElement>
这看起来是实现这一目标的合理方式,还是有一种我不知道的更简单/更好的方式。
我目前计划使用pugixml作为XML解析器,但是,我很可能会围绕它编写一个包装器。
感谢您的帮助
答案 0 :(得分:0)
首先:除非您的设置和信号被视为纯文本,否则您上面提供的“XML”并不是真正有效的XML。否则你必须使用类似的东西:
<Settings>
<setting name="setting1" value="1" />
<setting name="setting2" vakue="2" />
</Settings>
此外,如果您需要按特定顺序读取XML文件的元素,那么您不是在谈论XML,而是看起来像XML的纯文本 - XML标准确实需要在它们在文件中找到相同的顺序(仅保留级别结构)。所以你可能会在“setting1”和“clock”之前的“signal”之前读取“setting2”。要维护某个订单,您需要使用一些可以排序的“排序”属性。
我要做的是构建某种“动作列表” - 要做的事情列表(设置设置或启动动作)并填写解析XML文件的列表。然后,我会遍历列表并执行动作告诉我的操作。
但是,这绝不会标题为“用C ++中的XML调用函数”(这是不可能的,因为XML不会像程序运行那样“运行”)。