0

我打算将 XML 解析添加到我正在处理的项目中。这将需要允许软件不仅可以加载和保存设置,还需要在需要时调用函数。

我可以看到加载和保存设置不是问题,但是,需要触发的异步事件可能有点棘手。

应用程序将被远程驱动,并且需要触发事件,例如开始播放。这应该使用 XML 来完成。

我可以看到的一种方法如下所示。对于每个元素,XML 将包含设置和信号。对于加载和保存,不需要信号,只需要设置。但是,如果需要调用信号,则其值将设置为 1,并且时钟将被切换。

<SomeElement>
  <Settings>
    <setting1 value="1"/>
    <setting2 value="2"/>
  </Settings>
  <Signals>
    <clock value="0"/>
    <Signal1 value="1"/>
  </Signals>
</SomeElement>

这似乎是实现这一目标的合理方式,还是有一种我不知道的更简单/更好的方式。

我目前计划使用 pugixml 作为 XML 解析器,但是,我很可能会围绕它编写一个包装器。

谢谢你的帮助

4

1 回答 1

0

首先:您上面提供的“XML”不是真正有效的 XML,除非您的设置和信号被视为纯文本。否则你必须使用类似的东西:

<Settings>
    <setting name="setting1" value="1" />
    <setting name="setting2" vakue="2" />
</Settings>

此外,如果您要求以特定顺序读取 XML 文件的元素,那么您不是在谈论 XML,而是在谈论类似于 XML 的纯文本 - XML 标准确实要求以与它们相同的顺序交付元素在文件中找到(仅保留级别结构)。因此,您很可能在“setting1”之前阅读“setting2”,在“clock”之前阅读“signal”。为了保持一定的顺序,您需要使用一些可以排序的“排序”属性。

我要做的是构建某种“操作列表”——要做的事情列表(设置设置或启动操作)并填充此列表以解析 XML 文件。然后,我将遍历列表并执行操作告诉我执行的操作。

但是,这绝不可以称为“在 C++ 中从 XML 调用函数”(这是不可能的,因为 XML 不是可以以程序运行的方式“运行”的东西)。

于 2013-01-02T11:38:32.763 回答