Linux(Ubuntu10.04 )下libxml2的安装以及使用示例
libxml2的安裝:
1.安裝包下載地址:http://xmlsoft.org/,我下載的地方是http://xmlsoft.org/sources/old/
2.下載好壓縮包后,對其進行解壓,解壓的命令是:sudo tar xvzf libxml2-2.7.1.tar.gz
3.配置,編譯安裝過程:
解壓好之后,進入解壓好的文件夾中:
cd libxml2-2.7.1
(默認路徑安裝)
sudo ./configure
sudo make
sudo make install
(自己設置安裝路徑)
或則
sudo ./configure --prefix /home/user/myxml/xmlinst
sudo make
sudo make install
export PATH=/home/user/myxml/xmlinst/bin:$PATH
我是按照默認路徑安裝的,因此下面的示例編譯方法都是針對默認路徑的。
libxml2經典應用示例xmlCreator.cpp:
1 #include <stdio.h>
2 #include <libxml/parser.h>
3 #include <libxml/tree.h>
4
5 int main(int argc,char **argv)
6 {
7 xmlDocPtr doc = NULL;/*document pointer*/
8 xmlNodePtr root_node = NULL,node = NULL,node1 = NULL;/*node pointers*/
9 //Creates a new document,a node and set it as a root node
10 doc = xmlNewDoc(BAD_CAST"1.0");
11 root_node = xmlNewNode(NULL,BAD_CAST"root");
12 xmlDocSetRootElement(doc,root_node);
13 //creates a new node,which is "attached" as child node of root_node node.
14 xmlNewChild(root_node,NULL,BAD_CAST"node1",BAD_CAST"content of node1");
15
16 //xmlNewProp()creates attributes,which is "attached" to an node.
17 node = xmlNewChild(root_node,NULL,BAD_CAST"node3",BAD_CAST"node has attributes");
18 xmlNewProp(node,BAD_CAST"attribute",BAD_CAST"yes");
19
20 //Here goes another way to create nodes.
21 node = xmlNewNode(NULL,BAD_CAST"node4");
22 node1 = xmlNewText(BAD_CAST"other way to create content");
23
24 xmlAddChild(node,node1);
25 xmlAddChild(root_node,node);
26
27 //Dumping document to stdio or file
28 xmlSaveFormatFileEnc(argc > 1 ? argv[1]:"-",doc,"UTF-8",1);
29
30 /*free the document*/
31 xmlFreeDoc(doc);
32 xmlCleanupParser();
33 xmlMemoryDump();//debug memory for regression tests
34
35 return 0;
36 }
編譯過程:此處是cpp文件,因此是,g++ xmlCreator.cpp -o xmlCreator -I /usr/local/include/libxml2 -L /usr/local/lib -lxml2
如果是c文件,則應該改為:gcc xmlCreator.cpp -o xmlCreator -I /usr/local/include/libxml2 -L /usr/local/lib -lxml2
******-I 后接頭文件目錄 -L后接lib庫目錄
......$ gcc xmlCreator.cpp -o xmlCreator -I /usr/local/include/libxml2 -lxml2 /tmp/ccPeKBRE.o:(.eh_frame+0x12): undefined reference to `__gxx_personality_v0' collect2: ld returned 1 exit status
......$ g++ xmlCreator.cpp -o xmlCreator -I /usr/local/include/libxml2 -lxml2 ---------------ok
因此,出現這種錯誤的時候,要注意看是不是編譯器用錯了,用gcc編譯C程序,用g++編譯C++程序,對號入座就沒有問題了。
生成xmlCreator文件后,運行結果如下:
1 <?xml version="1.0" encoding="UTF-8"?> 2 <root> 3 <node1>content of node1</node1> 4 <node3 attribute="yes">node has attributes</node3> 5 <node4>other way to create content</node4> 6 </root>
到此,一個使用libxml2庫創建xml文件的簡單例子就講完了。。。。。。
總結
以上是生活随笔為你收集整理的Linux(Ubuntu10.04 )下libxml2的安装以及使用示例的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 二叉树的存储结构及四种遍历(C语言)
- 下一篇: 中视频计划你真的看懂了吗中视频计划你真的