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は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

解析が成功するとnullを返すようです。

docTemp.RootElement()に有効な要素が含まれているかどうかを確認できますか?

于 2011-05-26T22:29:05.353 に答える
1

解析が成功したときに、失敗した場合と閉じ角括弧の横にある文字へのポインタがTiXMLDocument::Parse戻ったように見えます。NULL

于 2011-08-11T15:09:13.033 に答える