前段時間在專案中用到了涉及到了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 然...