我正在编写我的应用程序的一部分,将设置存储在XML文件中,但我不希望“客户端”重复,我想要这样:
<jack>
<client name="something">
<port name="someport" />
<port name="someport_2" />
</client>
</jack>
但我得到了:
<jack>
<client name="something">
<port name="someport" />
</client>
<client name="something">
<port name="someport_2" />
</client>
</jack>
认为“只检查节点是否已经存在”但这就是问题,所以我有这段代码:
// xjack is the root node
pugi::xml_node xclient = xjack.child(sclient.c_str());
if (!xclient) {
xclient = xjack.append_child("client");
}
但!xclient
总是评估为true,同时也尝试了if (xclient.empty())
,但也无效。
答案 0 :(得分:1)
考虑zeuxcg的评论我可以弄清楚出了什么问题。
pugi::xml_node xclient = xjack.child(sclient.c_str());
正在寻找一个真正不存在的名字“某事”的孩子,我正在寻找的是名为“client”的标签和属性“name”,其值为“something” ”
所以,正确的是:
pugi::xml_node xclient = xjack.find_child_by_attribute("client", "name", sclient.c_str());
if (!xclient) {
xclient = xjack.append_child("client");
xclient.append_attribute("name").set_value(sclient.c_str());
}