TinyXML2 возвращает Null?

В настоящее время я встраиваю TinyXML2 в игровой движок. У меня есть этот код, который теоретически должен работать, если я не смотрю на него слишком долго. Может ли кто-нибудь предложить какую-либо помощь? Очень признателен!

В основном это возвращает Нуль.

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>

0

Решение

Вы копаете слишком глубоко в начале, удалите один из вызовов 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;
}
0

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]