2011-05-26 76 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; 
}