首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >TinyXML2返回Null?

TinyXML2返回Null?
EN

Stack Overflow用户
提问于 2014-03-12 04:02:45
回答 1查看 688关注 0票数 0

我目前正在将TinyXML2嵌入到游戏引擎中。我有这段代码,理论上应该可以工作,除非我盯着它看了太久。有人能帮上忙吗?非常感谢!

基本上,它返回Null。

代码语言:javascript
复制
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设置。

代码语言:javascript
复制
<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>
EN

回答 1

Stack Overflow用户

发布于 2014-04-10 04:14:45

你在一开始研究得太深了,删除其中一个FirstChildElement调用。然后,在param子元素的迭代中,您似乎总是返回最后一个,我进行了更改,以便返回具有请求属性的第一个param

代码语言:javascript
复制
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
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/22335428

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档