c 분석 xml c 오픈 소스 경량급 xml 라 이브 러 리 minixml

2845 단어 C 언어mini-xml
minixml
<?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>

속성 가 져 오기
#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
", 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
", light.machine);     fclose(fp);         return 0; }

먼저 설치 minixml, gcc 컴 파일 을 다운로드 합 니 다.
gcc -o main main.c -lmxml -lpthread

좋은 웹페이지 즐겨찾기