【发布时间】:2011-12-15 02:29:08
【问题描述】:
好的,下面是 XML 结构的示例:
<config>
<Ignored>
<Ignore name="Test A">
<Criteria>
<value>actual value</value>
</Criteria>
</Ignore>
<Ignore name="Test B">
<Criteria>
<value>actual value</value>
</Criteria>
</Ignore>
</Ignored>
<config>
我希望能够做两件事:
- 直接对 Test A 元素执行 get 操作,而无需循环所有 Ignore 元素。就像属性上的选择器一样。
- 如果不出意外,我需要一种更新任一 Ignore 元素的方法,但似乎无法弄清楚
我必须删除元素并重新创建它吗?我似乎无法找到一种方法来执行通过属性(在该级别将是唯一的)限定元素(在同一级别上有许多具有相同名称的元素)的放置。
类似:
pt.put("config.Ignored.Ignore.<xmlattr>.name='Test A'.Criteria.value",some_var)
或任何其他可以实现最终目标的东西。非常感谢!
全面披露:我对 C++ 还很陌生,可能会遗漏一些明显的东西。
【问题讨论】:
-
您为此使用 boost 属性树有充分的理由吗?使用真正的 XML 库可能会更好。
-
诚实吗?不,不能说我有充分的理由。我碰巧得到了提升,并想我会尝试使用那里的东西,而且效果很好......直到解决这个问题。如果要推荐一个真正的 XML 库,会是什么?
-
我推荐 tinyxml 和 libxml2(取决于您的其他需求)。