首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 网站开发 > XML SOAP >

VS上利用tinyxml解析xml无法进行const char转换

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

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

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


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 );
}
}

热点排行