一、下載、安裝
下載libxml2,官方網站,下載合適自己版本的源碼包。
http://rpmfind.net/linux/rpm2html/search.php?query=libxml2-devel
俺下載的版本為libxml2-devel-2.6.32-11.10.i586
解壓縮,編譯運行
./configure –prefix /usr/local/xml #安裝目錄
make
make install
安裝完成後/usr/local/xml下會多生成4個文件夾
bin include lib share
二、運行demo
使用Eclipse開發,新建C++項目。
1、解決頭文件路徑問題。
默認包含的目錄下面會自動添加libxml的頭文件。如果Eclipse沒有自動添加,我們可以手動添加,右鍵properties,進行以下修改
俺安裝後的頭文件路徑為
$/include/libxml2/libxml/*.h
而源代碼裡面的工作目錄默認為<libxml/*.h>
這時候工程是無法找到這些文件的,我們需要做的就是將目錄修改一下。
$/include/libxml/*.h
當然,還有一種辦法是將那些頭文件的包含的代碼修改一下。例如:
#include < libxml/xmlversion.h >
修改為
#include < libxml2/libxml/xmlversion.h >
這種方式是要將幾十個頭文件都做這種處理,俺才不會那麼傻呢。
2、demo src
void writeXML(void){ //定義文檔和節點指針 xmlDocPtr doc = xmlNewDoc(BAD_CAST"1.0"); xmlNodePtr root_node = xmlNewNode(NULL,BAD_CAST"root"); //設置根節點 xmlDocSetRootElement(doc, root_node); //在根節點中直接創建節點 xmlNewTextChild(root_node, NULL, BAD_CAST "newNode1", BAD_CAST "newNode1 content"); xmlNewTextChild(root_node, NULL, BAD_CAST "newNode2", BAD_CAST "newNode2 content"); xmlNewTextChild(root_node, NULL, BAD_CAST "newNode3", BAD_CAST "newNode3 content"); //創建一個節點,設置其內容和屬性,然後加入根結點 xmlNodePtr node = xmlNewNode(NULL, BAD_CAST"node2"); xmlNodePtr content = xmlNewText(BAD_CAST"NODE CONTENT"); xmlAddChild(root_node, node); xmlAddChild(node,content); xmlNewProp(node,BAD_CAST"attribute", BAD_CAST "yes"); //創建一個兒子和孫子節點 node = xmlNewNode(NULL, BAD_CAST "son"); xmlAddChild(root_node,node); xmlNodePtr grandson = xmlNewNode(NULL, BAD_CAST "grandson"); xmlAddChild(node,grandson); xmlAddChild(grandson, xmlNewText(BAD_CAST "This is a grandson node")); //存儲xml文檔 int nRel = 0; nRel = xmlSaveFile("CreatedXml.xml",doc); if (nRel != -1) { cout<<"一個xml文檔被創建,寫入"<<nRel<<"個字節"<<endl; } //釋放文檔內節點動態申請的內存 xmlFreeDoc(doc); }
3、設置lib
Eclipse設置鏈接路徑: /usr/local/xml/lib
設置連接庫 xml2
使用命令編譯的時候,加上以下參數:
-L /usr/local/xml/lib / -lxml2
恩,下面編譯執行就ok了。
升級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
Libxml2在Linux下的使用 http://www.linuxidc.com/Linux/2014-01/95402.htm
Ubuntu下用arm-none-linux-gnueabi交叉編譯libxml2 http://www.linuxidc.com/Linux/2014-05/101902.htm
更多Fedora相關信息見Fedora 專題頁面 http://www.linuxidc.com/topicnews.aspx?tid=5