解析XML格式的字符串的TinyXML返回NULL?

时间:2011-05-26 22:06:03

标签: tinyxml

我正在尝试使用TinyXML来解析XML格式的字符串。但返回指针始终为NULL。我不确定哪部分代码设置错误。

TiXmlDocument docTemp;
const string strData = "<?xml version=\"1.0\" ?><Hello>World</Hello>";
const char* pTest = docTemp.Parse(strData.c_str(), 0 , TIXML_ENCODING_UTF8);
if(pTest == NULL){
    cout << "pTest is NULL" << endl;
}

它始终显示'pTest is NULL' 有什么想法吗?

非常感谢!

4 个答案:

答案 0 :(得分:4)

如果出现错误,它应该返回0,但看起来TiXmlBase :: SkipWhiteSpace中存在错误,如果在结束括号后没有字符则返回0,但是如果有空格或\ r或\它返回指针。所以你有两个选项在结束括号后添加一些白色字符或修改SkipWhiteSpace开头的以下几行:

if ( !p || !*p )
{
    return 0;
}

类似于:

if ( !p )
{
   return 0;
}
if (!*p)
{
   return p;
}

答案 1 :(得分:3)

 if(pTest == NULL && docTemp->Error() ){
        cout << "pTest is NULL" << endl;
    }

答案 2 :(得分:1)

似乎解析在成功时返回null。

你能看到docTemp.RootElement()是否包含有效元素吗?

答案 3 :(得分:1)

看起来TiXMLDocument::Parse在失败的情况下返回NULL,并且当解析成功时,指向关闭尖括号旁边的字符的指针。