【发布时间】:2015-12-17 01:40:15
【问题描述】:
这是我的问题:
test.xml
<?xml version="1.0" encoding="UTF-8"?>
<server>
<a>true</a>
<b>false</b>
</server>
test.cpp
sampgdk::logprintf("%d", config.get<bool>("server/a"));
sampgdk::logprintf("%d", config.get<bool>("server/b"));
结果:
1
1
结果应该是 1 和 0 对吧?但在这两种情况下我总是得到 1。它只发生在 evaluate_boolean().evaluate_number() 和 evaluate_string() 工作正常。
这是我的 config.get
template<> bool framework::xml::get(std::string xpath) {
if (is_open) {
try {
return pugi::xpath_query(xpath.data()).evaluate_boolean(*ptr);
}
catch (std::exception &e) {
sampgdk::logprintf("XML exception: %s\n", e.what());
}
}
return false;
}
【问题讨论】:
-
我希望所有的赌注都被取消,因为您的 XML 文件无效。
-
@immibis XML 文件有效。这是我打开 xml 文件的代码:framework::xml config; config.open("test.xml");
-
您的问题中显示的 XML 无效。需要有一个单独的封闭标签。
-
@RaefaldhiAmartya
XML不能只是标签列表,必须有一个标签包含所有其他标签。例如。<mydata><a>true</a><b>false</b></mydata>。只有一个<mydata />标记围绕所有其他标记。 -
TBH 我认为这可能是 pugixml 中的一个错误,尝试了数字和零长度字符串,结果相同。