读取xml文件该怎么进行遍历啊?C/C++语言

读取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;

}

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;

}