libxml2编译与测试

官网

http://xmlsoft.org/
源码下载

http://xmlsoft.org/sources/

我使用的版本

libxml2-2.9.8.tar.gz

下载地址:https://download.youkuaiyun.com/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>

 

以下是在Windows环境下编译libxml2和使用Qt搭建libxml2环境的步骤: 1. 下载libxml2源代码 可以从libxml2官网(http://xmlsoft.org/)下载最新版本的libxml2源代码。下载完成后,将源代码解压缩到本地目录。 2. 安装MSYS2 MSYS2是一个可以在Windows上运行的轻量级Linux shell环境,可以用来编译和构建Unix软件。我们需要使用MSYS2编译libxml2。 可以从MSYS2官网(https://www.msys2.org/)下载最新版本的MSYS2,并按照官方文档进行安装。 安装完成后,打开MSYS2终端,并执行以下命令来更新系统: ``` pacman -Syu ``` 等待更新完成后,执行以下命令来安装编译工具链: ``` pacman -S base-devel ``` 3. 编译libxml2 打开MSYS2终端,并进入libxml2源代码目录。执行以下命令来编译libxml2: ``` ./configure --prefix=/usr/local --without-python make make install ``` 这将会编译libxml2并将其安装到/usr/local目录下。 4. 使用Qt搭建libxml2环境 打开Qt Creator,创建一个新的Qt控制台应用程序项目。在.pro文件中添加以下内容: ``` LIBS += -L/usr/local/lib -lxml2 INCLUDEPATH += /usr/local/include/libxml2 ``` 这将会告诉Qt编译器在编译时链接libxml2库,并告诉编译libxml2头文件所在的路径。 然后,在main.cpp文件中添加以下测试代码: ``` #include <iostream> #include <libxml/parser.h> int main(int argc, char *argv[]) { xmlInitParser(); std::cout << "libxml2 version: " << LIBXML_DOTTED_VERSION << std::endl; xmlCleanupParser(); return 0; } ``` 这将会测试libxml2是否成功安装并能正常工作。编译并运行程序,如果一切正常,将会输出libxml2的版本号。 至此,你已经成功搭建了libxml2环境,并使用Qt进行了测试
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值