一、下载、安装
下载libxml2,官方网站,下载合适自己版本的源码包。
http://rpmfind.net/linux/rpm2html/search.php?query=libxml2-devel
下载的版本为libxml2-devel-2.6.32-11.10.i586:http://rpmfind.net/linux/RPM/opensuse/updates/11.0/i586/libxml2-devel-2.6.32-11.10.i586.html
解压缩,编译运行
./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了。
Ubuntu下编译libxml2出错:http://www.linuxdiyf.com/linux/14652.html
Linux环境下C使用的xml解析库:libxml2:http://www.linuxdiyf.com/linux/10901.html