繁体   English   中英

TinyXML2返回Null吗?

[英]TinyXML2 returns Null?

我目前正在将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>

您在一开始的挖掘过于深入,请删除其中一个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;
}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM