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