libxml2编译与测试

官网

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 <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;
}

然后编译该文件

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

<?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>

 

  • 1
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值