libxml2編譯與測試
阿新 • • 發佈:2018-12-10
官網
http://xmlsoft.org/
原始碼下載
我使用的版本
libxml2-2.9.8.tar.gz
編譯原始碼
1、解壓原始碼包
[email protected]:~/xml2$ tar xvf libxml2-2.9.8.tar.gz
[email protected]:~/xml2$ cd libxml2-2.9.8/
2、生成makefile檔案
[email protected]:~/xml2/libxml2-2.9.8$ ./configure --prefix=/home/rt/opt --with-python-install-dir=/home/rt/opt
其中--prefix=為安裝路徑,--with-python-install-dir=為python安裝路徑,他有一些python安裝包需要裝,這裡我為了不影響系統原有庫,所以安裝到了自己的路徑中,如果需要安裝到自己系統中就不要新增後面的引數,直接./configure即可,後面的make install需要sudo許可權。
3、編譯,安裝
[email protected]:~/xml2/libxml2-2.9.8$ make
[email protected]:~/xml2/libxml2-2.9.8$ make install
此時在安裝路徑下就有生成的檔案了
. ├── bin │ ├── xml2-config │ ├── xmlcatalog │ └── xmllint ├── drv_libxml2.py ├── include │ └── libxml2 ├── lib │ ├── cmake │ ├── libxml2.a │ ├── libxml2.la │ ├── libxml2.so -> libxml2.so.2.9.8 │ ├── libxml2.so.2 -> libxml2.so.2.9.8 │ ├── libxml2.so.2.9.8 │ ├── pkgconfig │ └── xml2Conf.sh ├── libxml2mod.a ├── libxml2mod.la ├── libxml2mod.so ├── libxml2.py └── share ├── aclocal ├── doc ├── gtk-doc └── man
測試
測試檔案createxmlfile.c
/******************************************************************** created: 2007/11/09 created: 9:11:2007 15:34 filename: CreateXmlFile.cpp author: Wang xuebin depend: libxml2.lib build: nmake TARGET_NAME=CreateXmlFile purpose: 建立一個xml檔案 *********************************************************************/ #include <stdio.h> #include <libxml/parser.h> #include <libxml/tree.h> #include <string.h> int main() { //定義文件和節點指標 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 = xmlSaveFile("CreatedXml.xml",doc); if (nRel != -1) { printf("一個xml文件被建立,寫入%d個位元組\n", nRel); } //釋放文件內節點動態申請的記憶體 xmlFreeDoc(doc); return 1; }
然後編譯該檔案
[email protected]:~/xml2$ gcc createxmlfile.c -o createxml -I/home/rt/opt/include/libxml2 -L/home/rt/opt/lib -lxml2
[email protected]:~/xml2$ ls
createxml createxmlfile.c libxml2-2.9.8 libxml2-2.9.8.tar.gz readme.txt
[email protected]:~/xml2$ ./createxml
一個xml文件被建立,寫入245個位元組
此時生成一個xml檔案 CreatedXml.xml
<?xml version="1.0"?>
<root>
<newNode1>newNode1 content</newNode1>
<newNode2>newNode2 content</newNode2>
<newNode3>newNode3 content</newNode3>
<node2 attribute="yes">NODE CONTENT</node2>
<son>
<grandson>This is a grandson node</grandson>
</son>
</root>