3

我正在尝试使用 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

4 回答 4

4

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

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

类似于:

if ( !p )
{
   return 0;
}
if (!*p)
{
   return p;
}
于 2012-09-27T08:28:42.010 回答
3
 if(pTest == NULL && docTemp->Error() ){
        cout << "pTest is NULL" << endl;
    }
于 2012-03-26T07:58:42.663 回答
1

It seems like the parse returns null on success.

Can you see if docTemp.RootElement() contains a valid element ?

于 2011-05-26T22:29:05.353 回答
1

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

于 2011-08-11T15:09:13.033 回答