geo*_*rge 2 c++ xml parsing xml-parsing
嗨,我想使用XML文件作为配置文件,我将从中读取我的应用程序的参数.我遇到了PugiXML库,但是我遇到了获取属性值的问题.我的XML文件看起来像那样
<?xml version="1.0"?>
<settings>
<deltaDistance> </deltaDistance>
<deltaConvergence>0.25 </deltaConvergence>
<deltaMerging>1.0 </deltaMerging>
<m> 2</m>
<multiplicativeFactor>0.7 </multiplicativeFactor>
<rhoGood> 0.7 </rhoGood>
<rhoMin>0.3 </rhoMin>
<rhoSelect>0.6 </rhoSelect>
<stuckProbability>0.2 </stuckProbability>
<zoneOfInfluenceMin>2.25 </zoneOfInfluenceMin>
</settings>
Run Code Online (Sandbox Code Playgroud)
要削减XML文件,我使用此代码
void ReadConfig(char* file)
{
pugi::xml_document doc;
if (!doc.load_file(file)) return false;
pugi::xml_node tools = doc.child("settings");
//[code_traverse_iter
for (pugi::xml_node_iterator it = tools.begin(); it != tools.end(); ++it)
{
cout<<it->name() << " " << it->attribute(it->name()).as_double();
}
}
Run Code Online (Sandbox Code Playgroud)
我也试图用这个
void ReadConfig(char* file)
{
pugi::xml_document doc;
if (!doc.load_file(file)) return false;
pugi::xml_node tools = doc.child("settings");
//[code_traverse_iter
for (pugi::xml_node_iterator it = tools.begin(); it != tools.end(); ++it)
{
cout<<it->name() << " " << it->value();
}
}
Run Code Online (Sandbox Code Playgroud)
属性是corectly加载的,但所有值都等于0.有人可以告诉我我做错了什么吗?
我认为您的问题是您希望将值存储在节点本身中,但它确实存在于CHILD文本节点中.快速扫描文档显示您可能需要
it->child_value()
Run Code Online (Sandbox Code Playgroud)
代替
it->value()
Run Code Online (Sandbox Code Playgroud)