歡迎來到Linux教程網
Linux教程網
Linux教程網
Linux教程網
Linux教程網 >> Linux基礎 >> Linux教程 >> Libxml2在Linux下的使用

Libxml2在Linux下的使用

日期:2017/2/28 14:36:55   编辑:Linux教程

一、下載和安裝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 http://www.linuxidc.com/Linux/2008-05/12749.htm

Ubuntu libxml2 http://www.linuxidc.com/Linux/2007-10/8075.htm

具體安裝步驟:
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

Copyright © Linux教程網 All Rights Reserved