首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >TinyXML获取值

TinyXML获取值
EN

Stack Overflow用户
提问于 2013-03-05 03:36:36
回答 1查看 3.8K关注 0票数 3

给定如下XML:

代码语言:javascript
复制
<a>
    <result>0</result>
    <data>I9C3J9N3cCTZdKGK+itJW1Q==</data>
</a>

我需要得到<result>为0的事实,并对其执行操作。

我正在做:

代码语言:javascript
复制
TiXmlDocument doc;
bool bOK = doc.Parse((const char*)chunk.memory, 0, TIXML_ENCODING_UTF8);
if (bOK)
{
    TiXmlHandle hDoc(&doc);
    TiXmlElement *pRoot, *pParm, *pParm2;
    pRoot = doc.FirstChildElement("a");
    if(pRoot)
    {
        pParm = pRoot->FirstChildElement("result");
        if (pParm)
        {
            if (pParm->GetText()=="0")
            {
                pParm2 = pRoot->NextSiblingElement("data");
                if (pParm2)
                {
                    sValue = pParm2->GetText();
                    std::cout << "sValue: " << sValue << std::endl;
                }
            }
        }
    }
}

我认为GetText()是正确的答案,但是我做错了一些事情,因为我从来没有进入if来检查<data>元素。

有没有人能给我点启发?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2013-03-05 03:42:40

因为在你的例子中,<data>不是<a>的兄弟。

当您应该检查pParm->NextSiblingElement("data");时,您正在检查pRoot->NextSiblingElement("data")

您还可以将其更改为

代码语言:javascript
复制
pParm2 = pRoot->FirstChildElement("data");

编辑:对不起,我以为你指的是以下情况:

代码语言:javascript
复制
if (pParm2)

因此,解决方案可能是:

代码语言:javascript
复制
if (std::string(pParm->GetText())=="0")

代码语言:javascript
复制
if (strcmp(pParm->GetText(), "0"))

你来选吧。我更喜欢第一个。

编辑2:

我真的很抱歉,我忘记了strcmp返回两个字符串相同的第一个位置,所以,在你的例子中应该是:

代码语言:javascript
复制
if (strcmp(pParm->GetText(), "0") == 0)

您还需要包含<string.h>

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/15209665

复制
相关文章

相似问题

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