我正在尝试使用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' 有什么想法吗?
非常感谢!
答案 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
,并且当解析成功时,指向关闭尖括号旁边的字符的指针。