给定如下XML:
<a>
<result>0</result>
<data>I9C3J9N3cCTZdKGK+itJW1Q==</data>
</a>我需要得到<result>为0的事实,并对其执行操作。
我正在做:
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>元素。
有没有人能给我点启发?
发布于 2013-03-05 03:42:40
因为在你的例子中,<data>不是<a>的兄弟。
当您应该检查pParm->NextSiblingElement("data");时,您正在检查pRoot->NextSiblingElement("data")
您还可以将其更改为
pParm2 = pRoot->FirstChildElement("data");编辑:对不起,我以为你指的是以下情况:
if (pParm2)因此,解决方案可能是:
if (std::string(pParm->GetText())=="0")或
if (strcmp(pParm->GetText(), "0"))你来选吧。我更喜欢第一个。
编辑2:
我真的很抱歉,我忘记了strcmp返回两个字符串相同的第一个位置,所以,在你的例子中应该是:
if (strcmp(pParm->GetText(), "0") == 0)您还需要包含<string.h>。
https://stackoverflow.com/questions/15209665
复制相似问题