一、下載和安裝LIBXML2
【方法一】
Libxml2是個C語言的XML程式庫,能簡單方便的提供對XML檔案的各種操作,並且支援XPATH查詢,及部分的支援XSLT轉換等功能。Libxml2的是http://xmlsoft.org/
完全版的庫是開源的,並且帶有例子程式和說明檔案。由於我是在linux下用C語言進行研發的,所以我下載的是libxml2-2.6.20.tar.gz版本的源碼包。
升級Linux內建libxml2庫 在RedHat Linux上安裝php-5.2.5
Ubuntu libxml2
具體安裝步驟:
1、解壓:$tar zxvf libxml2-2.6.20.tar.gz
2、進入解壓後的安裝目錄:$cd libxml2-2.6.20
3、安裝三部曲:1)$./configure
2)$make
3)$make install
安裝完畢。
libxml2安裝中出現的錯誤:
cannot remove `libtoolT': No such file or directory
解決方案:
修改configure檔案
$ vim configure
刪除這一行: $RM "$cfgfile"
重新再運行 $ ./configure
你在安裝libxml2的時候,./configure --prefix=/usr/local
你在安裝好後,需要重新定義:
export LD_LIBRARY_PATH=/usr/local/lib
export PKG_CONFIG_PATH=/usr/local/lib/pkgconfig
具體的位置根據prefix指定的路徑定。
【方法二】
#sudo apt-get install libxml2
#sudo apt-get install libxml2-dev
【方法三】
libxml2 安裝使用 收藏
在項目中需要對資料的儲存與交換,為了方便期間使用普通文本儲存。但對文本解析時,考慮到程式的健壯性就需要處理多種意外情況,比較麻煩,因此對xml產生了點興趣。xml本身網站上有大把的資料,可以隨時參考。
Gnome項目提供了一個xml的C解析器:Libxml2。libxml2最新提供了xmlreader介面,使用很方便,不過版本在2.6以上才支援。今天倒騰了一了下,做了下簡單測試,在編譯自己的小程式上被拌了一下,寫文紀念。
現在的最新版本是2.6.30,可以到http://ftp.gnome.org/pub/GNOME/sources/libxml2/2.6/ 下載。
安裝很簡單,三部走。
// install
#./configure
#make
#make install
//test install
#make tests
//uninstall
#make uninstall
如果不需要特別的定製,在configure階段可以直接預設。 libxml2將預設把標頭檔與庫安裝在/usr/local/include/libxml2/libxml目錄下。因此可能會讓你在第一次編譯自己的程式時遇到標頭檔“no such file”的錯誤(比如我自己就這麼笨╮(╯▽╰)╭)。
libxml2提供瞭解決方法,它很體貼地在/usr/local/bin目錄下為您提供了xml2-config、xmlcatalog、xmllint三個便利的工具(嘀咕下:其實一點都不便利,提前給人說下多好啊,還得害人去查資料)。其中xml2-config在編譯時間用得到。
xml2-config可以。。。自己看下面吧
[root@Amanda ~]# xml2-config
Usage: xml2-config [OPTION]
Known values for OPTION are:
--prefix=DIR change libxml prefix [default /usr/local]
--exec-prefix=DIR change libxml exec prefix [default /usr/local]
--libs print library linking information
--cflags print pre-processor and compiler flags
--modules module support enabled
--help display this help and exit
--version output version information
這裡說到編譯時間用到的參數: --cflags和--libs,協助上說明這個為工程編譯時間提供輔助。它們提供的資訊如下:
[root@Amanda ~]# xml2-config --cflags
-I/usr/local/include/libxml2
[root@Amanda ~]# xml2-config --libs
-L/usr/local/lib -lxml2 -lz -lm
所以在編譯自己的測試程式時,可以直接使用 #gcc -I /usr/local/include/libxml2 -L/usr/local/lib -lxml2 -lz -lm -o test test.c 。
或者加入到makefile中,例如:
CFLAGS=`xml2-config --cflags`
LIBS=`xml2-config --libs`
測試程式:
#include <stdio.h>
#include <libxml/parser.h>
#include <libxml/tree.h>
int main(int argc, char **argv)
{
xmlDocPtr doc = NULL;
xmlNodePtr root_node = NULL, node = NULL, node1 = NULL;
doc = xmlNewDoc(BAD_CAST "1.0");
root_node = xmlNewNode(NULL, BAD_CAST "root");
xmlDocSetRootElement(doc, root_node);
xmlNewChild(root_node, NULL, BAD_CAST "node1",BAD_CAST "content of node1");
node=xmlNewChild(root_node, NULL, BAD_CAST "node3",BAD_CAST"node has attributes");
xmlNewProp(node, BAD_CAST "attribute", BAD_CAST "yes");
node = xmlNewNode(NULL, BAD_CAST "node4");
node1 = xmlNewText(BAD_CAST"other way to create content");
xmlAddChild(node, node1);
xmlAddChild(root_node, node);
xmlSaveFormatFileEnc(argc > 1 ? argv[1] : "-", doc, "UTF-8", 1);
xmlFreeDoc(doc);
xmlCleanupParser();
xmlMemoryDump();
return(0);
}
用下面的命令編譯通過。
gcc -I /usr/local/include/libxml2 -L /usr/local/lib -lxml2 test.c -o test