Libxml2在Linux下的使用

來源:互聯網
上載者:User

一、下載和安裝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

  • 1
  • 2
  • 3
  • 4
  • 下一頁

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.