Linux下libxml2的使用


一、下載、安裝

下載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了。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM