c 根据libxml库解析xml文件

最近做一个android工厂测试,里面需要一个解析xml文件,以前用java c#解析过xml,这次用c解析xml首先是第一次,下面是上代码先

首先引用头文件:

#include <libxml/parser.h>


//doc是xml路径

//rootNode是叶子节点

//cameraName是xml中的Profiles的name

//cv和ch指针是返回保存的地址

int flag_cv=0;
int flag_ch=0;
void getCameraValue(xmlDocPtr doc,xmlNode *rootNode , char* cameraName, xmlChar *cv,xmlChar *ch){
xmlNode *curNode; 
xmlChar *v;  
for(curNode=rootNode; curNode!=NULL; curNode=curNode->next)  
    {  
if(curNode->type==XML_ELEMENT_NODE)
{
//printf("node name:%s \n",curNode->name);
xmlAttr *attr=curNode->properties;//首个节点或NULL  
       while(attr!=NULL)  
            {  
                v=xmlGetProp(curNode,attr->name);//获取属性内容  
                //printf("\tattr(%s)=%s \n",attr->name,v);  

                if(flag_cv && !strcmp("flipping",curNode->name) && !strcmp("value_v",attr->name) )
{
flag_cv=0;
//printf("\tattr(%s)=%s \n",attr->name,v);
strncpy(cv, v, strlen(v) + 1);
}
if(flag_ch && !strcmp("flipping",curNode->name) && !strcmp("value",attr->name) )
{
flag_ch=0;
//printf("\tattr(%s)=%s \n",attr->name,v);
strncpy(ch, v, strlen(v) + 1);
}
if(!strcmp(cameraName,v))

flag_cv=1;
flag_ch=1;
}
xmlFree(v);  
                attr=attr->next;  
             }  

}
getCameraValue(doc,curNode->children,cameraName,cv,ch);
}
}

xml代码

<CameraSettings>
    <Profiles cameraId="0" name="123">
        <flipping value="H" value_v="V"/>

</Profiles>

    <Profiles cameraId="0" name="456">
        <flipping value="H" value_v="V"/>

</Profiles>

</CameraSettings>


最后ch读出的是H,cv都出来是V



评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Jack_ma1

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值