2011-05-26 45 views
3

我正在尝试使用TinyXML来解析XML格式的字符串。但是返回指针总是NULL。我不确定哪部分代码设置错误。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是NULL' 任何想法?

非常感谢!

回答

1

似乎分析成功返回null。

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

+0

你是对的。成功时返回null。 ,p – roboren 2011-05-27 00:18:25

1

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

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

应该在一个错误的情况下返回0,但看起来像有臭虫TiXmlBase :: SkipWhiteSpace,如果右括号则返回0后没有任何字符,但如果有一个白色的空间或\ r或\ n它会返回指针。所以,你有2个选择在SkipWhiteSpace的开头添加一些白色字符右括号后或修改以下行:

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

喜欢的东西:

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