读书人

VS下利用tinyxml解析xml无法进行const

发布时间: 2012-04-14 17:14:21 作者: rapoo

VS下利用tinyxml解析xml无法进行const char转换
tinyxml的帮助文档里有一个例子:

C/C++ code
void dump_to_stdout(const char* pFilename){    TiXmlDocument doc(pFilename);    bool loadOkay = doc.LoadFile();    if (loadOkay)    {        printf("\n%s:\n", pFilename);        dump_to_stdout( &doc ); // 此行报错    }    else    {        printf("Failed to load file \"%s\"\n", pFilename);    }}

在VS2008里调试这个例子时报错:
error C2664: “dump_to_stdout”: 不能将参数 1 从“TiXmlDocument *”转换为“const char *”

应如何解决此问题,实现函数的递归调用?
——谢谢!

[解决办法]
你没把帮助文档看全吧?
人家明明写着 dump_to_stdout( &doc );这个函数在后面进行声明。
以下摘自http://www.grinninglizard.com/tinyxmldocs/tutorial0.html

C/C++ code
void dump_to_stdout( TiXmlNode* pParent, unsigned int indent = 0 ){    if ( !pParent ) return;    TiXmlNode* pChild;    TiXmlText* pText;    int t = pParent->Type();    printf( "%s", getIndent(indent));    int num;    switch ( t )    {    case TiXmlNode::DOCUMENT:        printf( "Document" );        break;    case TiXmlNode::ELEMENT:        printf( "Element [%s]", pParent->Value() );        num=dump_attribs_to_stdout(pParent->ToElement(), indent+1);        switch(num)        {            case 0:  printf( " (No attributes)"); break;            case 1:  printf( "%s1 attribute", getIndentAlt(indent)); break;            default: printf( "%s%d attributes", getIndentAlt(indent), num); break;        }        break;    case TiXmlNode::COMMENT:        printf( "Comment: [%s]", pParent->Value());        break;    case TiXmlNode::UNKNOWN:        printf( "Unknown" );        break;    case TiXmlNode::TEXT:        pText = pParent->ToText();        printf( "Text: [%s]", pText->Value() );        break;    case TiXmlNode::DECLARATION:        printf( "Declaration" );        break;    default:        break;    }    printf( "\n" );    for ( pChild = pParent->FirstChild(); pChild != 0; pChild = pChild->NextSibling())     {        dump_to_stdout( pChild, indent+1 );    }} 

读书人网 >XML SOAP

热点推荐