青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品

C++中使用Expat解析XML

使用expat的原因很多,主要還是因為expat更靈活。習慣了TinyXML,一開始不太習慣expat,分析一下,其實很容易上手的。

    1.回調(diào)函數(shù)

    以下案例解析xml文件中的elment,attribute和text。expat使用回調(diào)方式返回xml數(shù)據(jù),解析器解析到一個element及其內(nèi)部屬性后,將調(diào)用事先設置好的函數(shù),同樣,當element結束和text結束后,也會分別調(diào)用對應的函數(shù)。

    2.如何處理數(shù)據(jù)之間的包含關系

    典型的方式是定義三個函數(shù)分別處理elment開始(含屬性)、element結束和文本內(nèi)容。回調(diào)函數(shù)的第一個參數(shù)是自定義的,通常用于存儲 XML文檔的上下文信息,用XML_SetUserData可以設置這個參數(shù),下例中傳遞一個整數(shù)指針,以便在每次回調(diào)時能知道該元素是第幾層元素。

    該參數(shù)也可以是一個棧對象的地址,開始一個元素時,將新元素對應的數(shù)據(jù)壓入堆棧,處理下一級元素時,新元素是棧頂元素在子元素,然后處理完了繼續(xù)把該元素壓入堆棧,繼續(xù)下一級新的子元素。當元素結束后,需要出棧,以便解析下個兄弟元素程時能取到父節(jié)點。

    好啦,基本應用還是很簡單的,實際上Expat的API函數(shù)不多。

    3.如何處理屬性

    屬性通過ElementHandler回調(diào)函數(shù)傳入,這里有一個char** atts就是屬性,這是一個字符指針數(shù)組,如果有N個屬性,數(shù)組大小就是2*N+1,最后一個素組元素為空指針,奇數(shù)指針對應屬性名稱,偶數(shù)指針對應屬性值(字符串格式)。可以在一個循環(huán)中處理多個屬性,當遇到空指針時,表示沒有更多屬性了。

    好啦,先看sample吧:

    #include <stdio.h>

    #include "expat.h"

    #pragma warning(disable:4996)

    #define XML_FMT_INT_MOD "l"

    static void XMLCALL startElement(void *userData, const char *name, const char **atts)

    {

    int i;

    int *depthPtr = (int *)userData;

    for (i = 0; i < *depthPtr; i++)

    printf(" ");

    printf(name);

    *depthPtr += 1;

    for(i=0;atts[i]!=0;i+=2)

    {

    printf(" %s=%s",atts[i],atts[i+1]);

    }

    printf("\n");

    }

    static void XMLCALL endElement(void *userData, const char *name)

    {

    int *depthPtr = (int *)userData;

    *depthPtr -= 1;

    }

    int main(int argc, char *argv[])

    {

    char buf[BUFSIZ];  XML_Parser parser = XML_ParserCreate(NULL);

    int done;  int depth = 0;

    XML_SetUserData(parser, &depth);

    XML_SetElementHandler(parser, startElement, endElement);

    FILE* pFile= argc<2 ?stdin : fopen(argv[1],"rb");

    do

    {    int len = (int)fread(buf, 1, sizeof(buf), pFile);

    done = len < sizeof(buf);

    if (XML_Parse(parser, buf, len, done) == XML_STATUS_ERROR)

    {

    fprintf(stderr,"%s at line %" XML_FMT_INT_MOD "u\n",

    XML_ErrorString(XML_GetErrorCode(parser)),

    XML_GetCurrentLineNumber(parser));

    return 1;

    }

    }

    while (!done);

    XML_ParserFree(parser);

    fclose(pFile);

    return 0;

    }

    4.其他ElementHanlder

    expat還可以設置CData,Comment的handler,另外一些函數(shù)本人還沒使用過,涉及到更多的xml標準的知識,如果需要,可以參考官方的手冊。

posted on 2012-02-26 13:31 一葉草 閱讀(2064) 評論(0)  編輯 收藏 引用
青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品
  • <ins id="pjuwb"></ins>
    <blockquote id="pjuwb"><pre id="pjuwb"></pre></blockquote>
    <noscript id="pjuwb"></noscript>
          <sup id="pjuwb"><pre id="pjuwb"></pre></sup>
            <dd id="pjuwb"></dd>
            <abbr id="pjuwb"></abbr>
            国产一区二区三区在线播放免费观看 | 国产三级欧美三级日产三级99| 欧美国产日韩精品| 蜜桃久久av一区| 欧美精品电影在线| 国产精品国产三级国产专播品爱网| 国产精一区二区三区| 一区二区视频免费完整版观看| 亚洲欧洲一区二区天堂久久 | 亚洲免费网站| 久久久久久久激情视频| 欧美成人一区二区三区片免费 | 亚洲国产高清aⅴ视频| 亚洲毛片在线| 欧美在线免费视屏| 欧美激情精品久久久久久久变态| 日韩视频中文| 久久爱另类一区二区小说| 欧美 日韩 国产一区二区在线视频| 欧美日韩在线三区| 国产夜色精品一区二区av| 亚洲欧洲另类| 久久精品国内一区二区三区| 欧美成人免费全部| 亚洲女性裸体视频| 你懂的亚洲视频| 国产欧美日韩综合一区在线播放 | 亚洲欧美经典视频| 免费在线亚洲| 国产亚洲欧美另类中文| 91久久夜色精品国产九色| 一区二区高清视频| 欧美一区1区三区3区公司| 欧美激情一区在线| 欧美一区二区私人影院日本 | 欧美一区高清| 日韩视频免费在线| 久久久久久**毛片大全| 欧美午夜视频在线| 亚洲免费成人| 美日韩免费视频| 午夜精品久久久久久久| 国产精品久久久久9999高清| 亚洲精品乱码久久久久久日本蜜臀 | 国产精品久久久免费| 亚洲国产精品女人久久久| 久久成人国产| 亚洲自拍偷拍色片视频| 欧美日韩一级大片网址| 91久久国产综合久久| 久久这里有精品视频| 欧美一区视频在线| 国产美女精品免费电影| 香蕉久久夜色精品| 亚洲午夜久久久久久久久电影院 | 亚洲欧美在线一区| 国产精品日韩精品欧美在线 | 欧美激情视频一区二区三区不卡| 久久久久久亚洲精品杨幂换脸 | 久久亚洲精品网站| 久久成人免费网| 国产亚洲视频在线| 欧美在线国产| 欧美伊人久久大香线蕉综合69| 国产欧美短视频| 久久精品官网| 久久婷婷av| 亚洲人成人一区二区在线观看| 亚洲国产高清视频| 欧美激情网友自拍| 亚洲综合日韩| 久久精品国产第一区二区三区最新章节| 国产日韩欧美一区二区| 久久婷婷国产综合尤物精品| 午夜精品一区二区三区在线视| 久久婷婷国产综合国色天香| 久久精品观看| 亚洲欧洲一区二区天堂久久| 日韩一区二区精品| 国产欧美日韩综合一区在线观看| 久久久久久一区二区| 免费观看在线综合| 亚洲图片激情小说| 欧美在线免费观看视频| 亚洲国产精品第一区二区| 日韩午夜av电影| 国产三级精品在线不卡| 欧美激情精品久久久久久久变态 | 欧美肥婆在线| 亚洲欧美激情视频在线观看一区二区三区| 在线亚洲国产精品网站| 国产亚洲精品久久久久婷婷瑜伽| 欧美肥婆bbw| 国产精品―色哟哟| 欧美高清视频一二三区| 国产精品r级在线| 欧美va天堂在线| 免费看精品久久片| 欧美另类专区| 久久影音先锋| 欧美亚一区二区| 麻豆成人在线观看| 国产精品毛片va一区二区三区 | 欧美一级一区| 欧美激情a∨在线视频播放| 午夜精品剧场| 欧美激情一区二区三区不卡| 久久成人免费视频| 欧美日本韩国一区二区三区| 久久久精品一区二区三区| 欧美日本国产精品| 欧美二区在线| 狠狠久久婷婷| 亚洲一区3d动漫同人无遮挡| 亚洲人精品午夜| 久久精品视频在线免费观看| 欧美亚洲一区二区在线| 欧美日韩一区成人| 亚洲精美视频| 亚洲电影免费在线 | 欧美午夜性色大片在线观看| 欧美激情精品久久久久久黑人| 国产一区二区日韩| 亚洲欧美激情精品一区二区| 亚洲永久免费精品| 欧美激情一二三区| 亚洲第一精品夜夜躁人人躁| 韩国自拍一区| 久久九九99| 久久影院午夜片一区| 国产亚洲精品资源在线26u| 亚洲淫性视频| 亚洲欧美中文日韩v在线观看| 亚洲一区视频在线观看视频| 欧美黄色aa电影| 亚洲高清视频一区二区| 亚洲电影免费观看高清完整版在线| 欧美一区在线看| 麻豆91精品91久久久的内涵| 在线观看一区欧美| 免费在线观看精品| 亚洲国产专区校园欧美| 99国产精品| 欧美视频免费在线| 亚洲一区二区av电影| 欧美在线视频免费观看| 国产视频一区在线观看| 欧美制服丝袜第一页| 老司机一区二区三区| 久久精品成人一区二区三区| 久久久久久久97| 黄色国产精品一区二区三区| 久久精品国产一区二区三| 欧美福利视频网站| 亚洲免费观看| 国产精品家庭影院| 亚洲在线观看免费视频| 久久精品一区二区三区四区| 亚洲福利精品| 欧美日韩国产在线播放| 亚洲影院一区| 欧美韩日一区| 欧美一区在线直播| 一区二区亚洲| 欧美色欧美亚洲另类七区| 一区二区三区精品国产| 久久精品99无色码中文字幕| 亚洲人成亚洲人成在线观看图片 | 欧美一区二区成人| 在线免费观看日本欧美| 欧美日韩精品一本二本三本| 亚洲欧美国产毛片在线| 女仆av观看一区| 亚洲欧美另类在线观看| 在线免费观看视频一区| 欧美丝袜一区二区| 久久手机免费观看| 亚洲性感美女99在线| 欧美99在线视频观看| 亚洲欧美视频一区| 亚洲精品色婷婷福利天堂| 国产欧美一区二区三区沐欲| 欧美高清在线一区| 欧美一区二区在线视频| 夜夜嗨av一区二区三区免费区| 快射av在线播放一区| 亚洲欧美第一页| 亚洲精品自在在线观看| 好看的日韩视频| 国产精品视频免费观看| 欧美精品一卡| 麻豆久久婷婷| 久久亚洲欧美| 久久xxxx| 欧美亚洲视频| 亚洲伊人网站| 亚洲视频在线观看一区| 亚洲美女网站| 亚洲乱码日产精品bd| 亚洲国产成人久久综合|