Welcome 微信登录

首页 / 操作系统 / Linux / Ubuntu 14.04下libxml2的安装和使用

关于libxml2库的详细信息的查看方法请查看:http://www.linuxidc.com/Linux/2014-05/101924.htmUbuntu 14.04下libxml2库的安装方法:sudo apt-get install libxml2sudo apt-get install libxml2-dev利用以上命令安装完软件包后可以利用以下命令来查看软件包的状态(确定是否安装成功)dpkg -s libxml2-dev也可以用如下命令(得到的结果是一样的):dpkg-query -s libxml2-dev软件安装好后,默认情况下,libxml2对应的头文件均放置在/usr/include/libxml2/libxml目录下,这一信息可利用如下两个命令查看(任一命令都能查看到相关信息)dpkg -L libxml2-devxml2-config --cflagslibxml2的库文件放置在/usr/lib/i386-linux-gnu目录下,这一信息可利用如下两个命令查看(任一命令都能查看到相关信息)dpkg -L libxml2-devxml2-config --libs对应libxml2有一个工具,名字为xml2-config,xml2-config所在的目录为/usr/bin,其实这是一个shell脚本,关于xml2-config的详细信息可以通过如下命令来查看man xml2-config安装后libxml2库后,就可以开始进行基于libxml2库的开发了。现有以下一段程序,程序文件名为CreateXmlFile.c,是基于libxml2库开发的。推荐阅读:Debian软件包管理工具apt-get和dpkg操作备忘 http://www.linuxidc.com/Linux/2014-04/99847.htmDebian编译内核时err: line 65 dpkg-gencontrol command not found http://www.linuxidc.com/Linux/2014-03/98783.htmUbuntu安装软件提示“无法打开锁文件 /var/lib/dpkg/lock ”问题解决 http://www.linuxidc.com/Linux/2013-01/77790.htmUbuntu dpkg 安装软件 常用参数 http://www.linuxidc.com/Linux/2012-10/73200.htmLinux-dpkg软件包和APT软件包管理操作 http://www.linuxidc.com/Linux/2011-11/47357.htmApt-get | dpkg | YUM 使用相关简介(英文) http://www.linuxidc.com/Linux/2011-06/37526.htm代码如下/**********************************
created: 2014/05/12
filename: CreateXmlFile.c
auther: wang kai
depend: libxml2.lib
purpose: 创建一个xml文件
**********************************/#include<stdio.h>
#include<libxml/parser.h>
#include<libxml/tree.h>int main(int argc, char **argv)
{
 //Define document pointer
 xmlDocPtr doc = xmlNewDoc(BAD_CAST"1.0");    //Define node pointer
 xmlNodePtr root_node = xmlNewNode(NULL,BAD_CAST"root"); //Set the root element of the document
 xmlDocSetRootElement(doc,root_node); //Create child nodes directly in the root node
 xmlNewTextChild(root_node,NULL,BAD_CAST"newnode1",BAD_CAST"newnode1 content");
 xmlNewTextChild(root_node,NULL,BAD_CAST"newnode2",BAD_CAST"newnode2 content"); //Create a new node
 xmlNodePtr node = xmlNewNode(NULL,BAD_CAST"node2");
 //Create a new text node
 xmlNodePtr content = xmlNewText(BAD_CAST"NODE CONTENT"); //Add a new node to parent
 xmlAddChild(root_node,node);
 xmlAddChild(node,content);
 //Create a new property carried by a node
 xmlNewProp(node,BAD_CAST"attribute",BAD_CAST"yes"); //Create a son and grandson node element
 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"));
 
 //Dump an XML document to a file
 int nRel = xmlSaveFile("CreatedXml.xml",doc);
 if(nRel != -1)
  printf("一个xml文档被创建,写入 %d 个字节 ",nRel);
 
 //Free up all the structures used by a document,tree included
 xmlFreeDoc(doc);
 //printf("Hello World! ");
 return 0;
}对这个程序进行编译时,可用以下命令gcc -I/usr/include/libxml2  CreateXmlFile.c -o CreateXmlFile -L /usr/lib/i386-linux-gnu -lxml2其中,-I参数是为了指定gcc编译器查找头文件的路径,-L参数是为了指定libxml2库文件所在的路径,最后的-lxml2指定具体的库文件。(-lxml2一定要放在命令的最后位置,不然会出现找不到链接库的错误,如下图所示)具体为什么一定要把-lxml2放在最后的位置,本人目前还没弄明白,有待进一步研究编译命令也可以写成如下形式:gcc `xml2-config --cflags` -L /usr/lib/i386-linux-gnu CreateXmlFile.c -o CreateXmlFile -lxml2或gcc `xml2-config --cflags`  CreateXmlFile.c -o CreateXmlFile -L /usr/lib/i386-linux-gnu -lxml2或gcc CreateXmlFile.c -o CreateXmlFile `xml2-config --cflags --libs`形式虽然不一样,其实命令的实际内容是一样的。因为命令xml2-config --cflags的执行结果为-I/usr/include/libxml2       (指明include头文件所在的目录)命令xml2-config --libs的执行结果为-L/usr/lib/i386-linux-gnu -lxml2 (指明libxml2库文件所在的目录以及具体的库文件)(不管写成何种形式,只要保证 -lxml2 在编译命令的最后位置即可)升级Linux自带libxml2库 在RedHat Linux上安装php-5.2.5 http://www.linuxidc.com/Linux/2008-05/12749.htmUbuntu libxml2 http://www.linuxidc.com/Linux/2007-10/8075.htmLibxml2在Linux下的使用 http://www.linuxidc.com/Linux/2014-01/95402.htmUbuntu下用arm-none-linux-gnueabi交叉编译libxml2 http://www.linuxidc.com/Linux/2014-05/101902.htm更多Ubuntu相关信息见Ubuntu 专题页面 http://www.linuxidc.com/topicnews.aspx?tid=2本文永久更新链接地址