我目前正在将TinyXML2嵌入到游戏引擎中。我有这段代码,理论上应该可以工作,除非我盯着它看了太久。有人能帮上忙吗?非常感谢!
基本上,它返回Null。
const char *CXMLManager::GetWeaponGeometry( const char *pWeaponFile, const char *pParam )
{
LoadWeaponXML( pWeaponFile );
const char *pData;
XMLElement* root = doc.FirstChildElement()->FirstChildElement( "geometry" );
for(XMLElement* e = root->FirstChildElement("param"); e != NULL; e = e->NextSiblingElement("param"))
{
pData = e->Attribute( pParam );
}
return pData;
}下面是我的XML设置。
<weapondata>
<param bullet_damage='2' />
<param melee_damage='42' />
<geometry>
<param fp_mesh='models/weapons/v_pist_deagle.mdl' />
<param tp_mesh='models/weapons/w_pist_deagle.mdl' />
</geometry>
</weapondata>发布于 2014-04-10 04:14:45
你在一开始研究得太深了,删除其中一个FirstChildElement调用。然后,在param子元素的迭代中,您似乎总是返回最后一个,我进行了更改,以便返回具有请求属性的第一个param。
const char *CXMLManager::GetWeaponGeometry( const char *pWeaponFile, const char *pParam )
{
LoadWeaponXML( pWeaponFile );
if (XMLElement* root = doc.FirstChildElement( "geometry" ))
{
for (XMLElement* e = root->FirstChildElement("param");
e != NULL;
e = e->NextSiblingElement("param"))
{
if (const char *pData = e->Attribute( pParam ))
return pData;
}
}
return NULL;
}https://stackoverflow.com/questions/22335428
复制相似问题