问题描述
- 读取xml文件该怎么进行遍历啊?C/C++语言
-
请教大牛,我用的是libxml库,如果我这样,可以把所有都遍历一遍吗?(伪代码)
获得root节点;curNode = root->children; while(curNode) { xmlTravel = curNode; while(xmlTravel) { xmlTravel = xmlTravel->next; } }
对吗?还有什么办法吗?
我希望得到指定的
<属性> 以及
<>内容<>
"内容"该怎么写?
解决方案
int GetProperNode( xmlNodePtr xmlCur, char cpNodeName, char *cpPropName, char *cpValue )
{
char *cpProp = NULL;
while( xmlCur != NULL )
{
if( xmlStrcmp( xmlCur->name, ( const char * )cpNodeName ) == 0 )
{ / 找到了想要的属性 */
cpProp = ( char * )xmlGetProp( xmlCur, BAD_CAST cpPropName );
strcpy( cpValue, cpProp );
xmlFree( cpProp );
return 1;
}
if( xmlCur->xmlChildren != NULL )
{ /* 如果还有子节点,继续遍历 */
if( GetProperNode( xmlCur->xmlChildren, cpNodeName, cpPropName, cpValue ) )
{
return 1;
}
}
/* 兄弟节点 */
xmlCur = xmlCur->next;
}
return 0;
}
解决方案二:
java遍历文件夹读取文件进行处理
C Windows 读取文件夹 遍历文件
C语言中也可以方便地进行遍历
解决方案三:
int GetProperNode( xmlNodePtr xmlCur, char cpNodeName, char *cpPropName, char *cpValue )
{
char *cpProp = NULL;
while( xmlCur != NULL )
{
if( xmlStrcmp( xmlCur->name, ( const char * )cpNodeName ) == 0 )
{ / 找到了想要的属性 */
cpProp = ( char * )xmlGetProp( xmlCur, BAD_CAST cpPropName );
strcpy( cpValue, cpProp );
xmlFree( cpProp );
return 1;
}
if( xmlCur->xmlChildren != NULL )
{ /* 如果还有子节点,继续遍历 */
if( GetProperNode( xmlCur->xmlChildren, cpNodeName, cpPropName, cpValue ) )
{
return 1;
}
}
/* 兄弟节点 */
xmlCur = xmlCur->next;
}
return 0;
}