linux下使用libxml2实现对xml文件的读取及查询
2014-08-17 15:00
423 查看
由于项目需要,这两天在用C++做XML文件解析的工作。在linux下有个很方便的操作xml文件的库——libxml2,它提供了一套创建和查询xml文件的C语言的接口。这篇博客主要介绍如何使用libxml2读取并解析xml文件。
下载最新的版本,我下载的是libxml2-2.9.1.tar.gz。下载后将文件解压到合适的位置,进入解压后的目录。
编译命令非常简单(注意:如果configure文件没有可执行权限,增加可执行权限):
./configure
make
make install
此时libxml2相关的头文件应该在/usr/local/include/libxml2目录下,libxml2相关的库文件应该在/usr/local/lib目录下。
我们使用下面的xml测试用例:
具体流程我已经在代码中详细注释,这里就不单独拿出来解释。
更加详细的libxml2接口,可以访问http://xmlsoft.org/html/libxml-tree.html
g++ search2.cpp -I/usr/local/include/libxml2 -L/usr/local/lib -lxml2 -o search2
显示如下结果:
title: Harry Potter
title: Learning XML
运行./search2
显示如下结果:
title: Harry Potter
title: Learning XML
下载并安装libxml2
下载地址:ftp://xmlsoft.org/libxml2/下载最新的版本,我下载的是libxml2-2.9.1.tar.gz。下载后将文件解压到合适的位置,进入解压后的目录。
编译命令非常简单(注意:如果configure文件没有可执行权限,增加可执行权限):
./configure
make
make install
此时libxml2相关的头文件应该在/usr/local/include/libxml2目录下,libxml2相关的库文件应该在/usr/local/lib目录下。
解析XML文档的两种方式
在使用libxml2进行XML文档的解析时,非常推荐使用XPath语言实现,如果把XML文件看作数据库的话,那么XPath就可被视为sql,我们只要构造一定格式的语句就可查询到相关结果,而在在libxml2中使用Xpath是非常简单的。当然我们也可以直接通过libxml2相关接口从跟节点出发,根据整个xml的父子节点关系定位到相关节点进行查询。下面我将分别对这两种方式进行介绍。我们使用下面的xml测试用例:
直接使用libxml2接口解析XML文档
具体流程我已经在代码中详细注释,这里就不单独拿出来解释。使用XPath语言解析XML文档
关于XPath的基础知识,可以访问http://www.w3school.com.cn/xpath/index.asp具体流程我已经在代码中详细注释,这里就不单独拿出来解释。
更加详细的libxml2接口,可以访问http://xmlsoft.org/html/libxml-tree.html
编译程序并运行
编译上述程序
g++ search1.cpp -I/usr/local/include/libxml2 -L/usr/local/lib -lxml2 -o search1g++ search2.cpp -I/usr/local/include/libxml2 -L/usr/local/lib -lxml2 -o search2
运行程序及运行结果
运行./search1显示如下结果:
title: Harry Potter
title: Learning XML
运行./search2
显示如下结果:
title: Harry Potter
title: Learning XML
相关文章推荐
- linux下使用libxml2实现对xml文件的读取及查询
- linux下,纯c++使用libxml2读取xml文件
- linux下,纯c++使用libxml2读取xml文件
- 记一次项目经历——linux环境下使用libxml2实现xml文件的生成与解析
- 简单的使用自动化技术实现用WORD读取一个XML文件的过程~
- 使用libxml2实现简单合并两个不同的xml文件
- 从此例中终于实现了从外部xml文件读取数据使用Flare 生成有节点有连线的Graph
- Linux下C语言实现的简单使用线程向FIFO里写入与读取数据的例子
- linux下使用SWIG实现Python调用C++ sdk读取相机图片
- c++中使用libxml2读取xml文件
- linux下使用read函数实现的按行读取readline
- C++中使用libxml2读取xml文件
- c++中使用libxml2读取xml文件
- linux下ADT Bundle实现APP通过jni读取内存信息,以及NDK的使用
- 使用commons-configuration2实现xml文件读取为对象
- Linux下使用LibXML2处理XML文件
- php中使用DOM类读取XML文件的实现代码
- c++中使用libxml2读取xml文件
- Linux下使用LibXML2处理XML文件