sinat_30329511
hair_man
采纳率51.6%
2015-08-24 23:37 阅读 2.2k

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

请教大牛,我用的是libxml库,如果我这样,可以把所有都遍历一遍吗?(伪代码)
获得root节点;

 curNode = root->children;
while(curNode)
{
      xmlTravel = curNode;
      while(xmlTravel)
       {
                            xmlTravel = xmlTravel->next;
       }
}

对吗?还有什么办法吗?
我希望得到指定的
<属性> 以及
<>内容<>
"内容"该怎么写?

  • 点赞
  • 写回答
  • 关注问题
  • 收藏
  • 复制链接分享

2条回答 默认 最新

  • 已采纳
    qq123386926 qq1223386926 2015-08-25 13:35

    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;
    

    }

    点赞 评论 复制链接分享
  • qq123386926 qq1223386926 2015-08-25 13:41

    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;
    

    }

    
    
    点赞 评论 复制链接分享

相关推荐