官网
http://xmlsoft.org/
源码下载
http://xmlsoft.org/sources/
我使用的版本
libxml2-2.9.8.tar.gz
下载地址:https://download.csdn.net/download/andylauren/10669589
编译源码
1、解压源码包
rt@ubuntu:~/xml2$ tar xvf libxml2-2.9.8.tar.gz
rt@ubuntu:~/xml2$ cd libxml2-2.9.8/
2、生成makefile文件
rt@ubuntu:~/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、编译,安装
rt@ubuntu:~/xml2/libxml2-2.9.8$ make
rt@ubuntu:~/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
#include
#include
#include
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;
}
然后编译该文件
rt@ubuntu:~/xml2$ gcc createxmlfile.c -o createxml -I/home/rt/opt/include/libxml2 -L/home/rt/opt/lib -lxml2
rt@ubuntu:~/xml2$ ls
createxml createxmlfile.c libxml2-2.9.8 libxml2-2.9.8.tar.gz readme.txt
rt@ubuntu:~/xml2$ ./createxml
一个xml文档被创建,写入245个字节
此时生成一个xml文件 CreatedXml.xml
newNode1 content
newNode2 content
newNode3 content
NODE CONTENT
This is a grandson node