c 解析xml c開源輕量級xml庫minixml

minixmlnode

<?xml version="1.0" encoding="UTF-8"?>
<ControllCommand>
    <!--客廳燈光 -->
    <Controll machine="light" type="場景同步"
        house="keting" sence="all"
        subnet_id="3" device_id="102" serial_area_id="1" length="11"></Controll>
    
    <Controll machine="light" type="場景同步"
        house="keting" sence="group"
        subnet_id="3" device_id="102" serial_area_id="1" length="11"></Controll>
    
    <Controll machine="light" type="迴路控制"
        house="keting" sence="1"
        subnet_id="3" device_id="102" serial_area_id="1" length="4"></Controll>
</ControllCommand>

獲取屬性code

#include <mxml.h>
#include <stdio.h>
#include <string.h>

// <Controll machine="light" type="場景同步" house="keting" sence="all" subnet_id="3" device_id="102" serial_area_id="1" length="11"/>
typedef struct myst1
{
    char machine[64];
    char type[64];
    char house[64];
    char sence[64];
    char subnet_id[64];
    char device_id[64];
    char serial_area_id[64];
    char length[64];
} lightStruct;

int main()
{
    FILE *fp;
    mxml_node_t *node;
    mxml_node_t *tree;
    lightStruct light={0};

    fp = fopen("./ctrl.xml", "r");
    tree = mxmlLoadFile(NULL, fp, MXML_NO_CALLBACK);
        

    for (node = mxmlFindElement(tree, tree, "Controll", "machine", "light",MXML_DESCEND);node != NULL;node = mxmlFindElement(node, tree, "Controll", "machine", "light",MXML_DESCEND))
    {
        // const char *mxmlElementGetAttr (mxml_node_t *node,const char *name);
        // printf("%s\n", mxmlElementGetAttr (node,"machine"));
        strcpy(light.machine,mxmlElementGetAttr (node,"machine"));
        strcpy(light.type , mxmlElementGetAttr (node,"type"));
        strcpy(light.house , mxmlElementGetAttr (node,"house"));
        strcpy(light.sence , mxmlElementGetAttr (node,"sence"));
        strcpy(light.subnet_id , mxmlElementGetAttr (node,"subnet_id"));
        strcpy(light.device_id , mxmlElementGetAttr (node,"device_id"));
        strcpy(light.serial_area_id , mxmlElementGetAttr (node,"serial_area_id"));
        strcpy(light.length , mxmlElementGetAttr (node,"length"));        
    }
    printf("%s\n", light.machine);

    fclose(fp);    

    return 0;
}


先下載安裝minixml,gcc編譯xml

gcc -o main main.c -lmxml -lpthread
相關文章
相關標籤/搜索