嵌入式linux對xml檔案的操作(expat篇)

2021-06-22 17:34:17 字數 1512 閱讀 6333

前段時間在專案中用到了涉及到了xml檔案的解析,環境是嵌入式linux,在此簡單總結一下留個記錄,也跟大家分享一下。

我在專案中用的是expat解析庫,還有很多其它的庫可以使用,比如libxml、minixml等,它們之間有些差別,下面是從網上粘來的說法。

目前的xml解析器一般有兩種解析的形式.一種是dom模型的,一種是sax2模型的.dom模型是講xml檔案中的結構解析成一棵樹,然後再進行各種操作;而sax2模型是類似與事件處理的方式從頭到位解析xml檔案.兩種方式各有優劣,不過在嵌入式裝置上用dom模型的解析器似乎太耗記憶體,所以一般都用sax2的解析器。

expat就是sax2模型的解析器,下面簡單說說安裝和使用方法:

2.執行configure檔案和make install、make,

注意執行 configure時要把編譯指令改為交叉編譯指令(交叉編譯指令視情況而定)如下:

./configure cc=arm-linux-gcc --host=arm-linux --prefix=$pwd/_install

3.使用方法:

expat庫要包含的標頭檔案是expat.h,如果是整合開發環境,如eclipse,需要包含動態庫或者靜態庫(libexpat.a,libexpat.so)的路徑,

expat要使用的函式有4個:

xml_parsercreate()

xml_setuserdata()

xml_setelementhandler()

xml_parserfree()

粘一段**

#include "readconfig.h"

#include "expat.h"

#define max_xml_config_file_size 1024000

static shm_data_cache *config_shm_data_cache = null;

static nayu_int32 g_channel_offset = 0;

static nayu_int32 g_device_offset = 0;

static nayu_int32 g_iopoint_offset = 0;

void startelement(void *userdata, const char *name, const char **atts)

void endelement(void *userdata, const char *name)

int get_total_config(shm_data_cache * shm)//自定義函式

xml_setuserdata(parser, &depth);

xml_setelementhandler(parser, startelement, endelement);

size_t len = 0;

dowhile(len>0);

xml_parserfree(parser);

fclose(pf);

return 0;

}

在arm嵌入式linux下解析XML檔案

在arm嵌入式linux下解析xml檔案 最近在arm linux下做個專案,需要在本地記錄一些資料,日誌之類的東西.本來準備隨便用文字檔案記錄下完事,突然看到了rss,於是想起了xml.自己還沒有用過xml,於是打算用xml來存放這個寫資料,算是練個手.由於以前沒有了解過xml程式設計,所以查閱了...

嵌入式 linux 編譯

第二次換了編譯環境編譯時又提示 make 3 drivers video console vgacon.o 錯誤 1 在網上搜尋結果 根據資訊的大概意思是關於vga的支援問題,在這裡我直接把關於vga的配置選項去掉不選,即 在執行 make menuconfig 配置時 不選vga 驅動。devic...

linux嵌入式開發

我的環境 主機 ubuntu 64位 開發板 mini2440 6 makefile檔案修改 在 opt friendlyarm mini2440 linux 2.6.29下執行 sudo vi.makefile 搜尋arm linux得到乙個結果 cross compile?arm linux 然...