简谈libxml2库函数的使用

本文简要介绍了XML的基本概念及其与HTML的区别,重点讲述了libxml2库的使用,包括库的安装、主要数据结构和常用函数。通过实例展示了如何利用libxml2进行XML文件的解析和操作,特别提到了libxml2的优点和不足,并分享了在使用过程中遇到的问题及解决方案。
摘要由CSDN通过智能技术生成


前言

在做4G拨号的时候,遇到从.xml文件获取数据的部分。所以趁机简单在菜鸟教程学习了xml。在使用libxml2库的时候,我们有必要先了解一下xml的语法规则。在了解xml的时候顺带又把HTML过了一下。


提示:以下是本篇文章正文内容,下面案例可供参考

一、XML简介

1.1 什么是XML

  1. XML 指可扩展标记语言(EXtensible Markup Language)。
  2. XML 是一种很像HTML的标记语言。
  3. XML的设计宗旨是传输数据,而不是显示数据。
  4. XML 标签没有被预定义。您需要自行定义标签。
  5. XML 被设计为具有自我描述性。
  6. XML 是W3C 的推荐标准。

1.2 XML 和 HTML 之间的差异

1、XML 不是 HTML 的替代。
2、XML 和 HTML 为不同的目的而设计:

  1. XML被设计用来传输和存储数据,其焦点是数据的内容。
  2. HTML 被设计用来显示数据,其焦点是数据的外观。

3、HTML 旨在显示信息,而 XML 旨在传输信息。
4、XML 是对 HTML 的补充。

1.3 浅谈个人对XML的理解

在不谈语法规则的情况下,我们可以把XML看成是一棵树。是一颗每个节点都可以有属性的树,我们再通过API函数接口对其读取数据是也是通过类似对数的遍历来对其进行增删改查的。我是通过使用libxml2库来对.xml文件进行解析的,下面来给大家简单的介绍一下libxml2库的使用。

二、libxml2简介

(具体的介绍就参考 http://xmlsoft.org/ 推荐英文好的去看)
Libxml2 是一个xml c语言版的解析器,本来是为Gnome项目开发的工具,是一个基于MIT License的免费开源软件。它除了支持c语言版以外,还支持c++、PHP、Pascal、Ruby、Tcl等语言的绑定,能在Windows、Linux、Solaris、MacOsX等平台上运行。功能还是相当强大的,相信满足一般用户需求没有任何问题。

Libxml2主要的优点有:

  1. 安装、使用比较简单,容易入门;
  2. 支持的编码格式较多,能很好的解决中文问题(使用一个很简单的编码转换函数);
  3. 支持Xpath解析(这点对于任意定位xml文档中的节点还是很有用的哦);
  4. 支持Well-formed 和valid验证,具体而言支持DTD验证,Schema验证功能正在完善中(目前多数解析器都还不完全支持shema验证功能);
  5. 支持目前通用的Dom、Sax方式解析等等。

不足之处也是有的:

  1. 指针太多,使用不当时就会出现错误,在Linux系统中表现为常见的段错误,同样管理不当易造成内存泄漏;
  2. 个人认为内面有些函数的功能设计的不是很好(比如获取Xpath函数,它不获取节点属性,这样子有些情况会定位不准)

三、libxml2库的安装

1、 下载libxml2
可从http://xmlsoft.org/官网下载,或者githome上自行下载。
2、 具体安装步骤
原码安装:

  1. 解压:$tar zxvf libxml2-2.6.20.tar.gz

  2. 进入解压后的安装目录:$cd libxml2-2.6.20

  3. 安装三部曲:

  $./configure
  $make
  $make install

(在这里不推荐使用shell命令直接安装)
shell命令安装:

$ sudo apt-get install libxml2 
$ sudo apt-get install libxml2-dev

四、libxml2中主要数据结构和常用函数

他的函数主要都在一下三个头文件:
#include <libxml/parse.h>
#include <libxml/tree.h>
#include <libxml/xpath.h>

4.1 主要数据结构

1.1 xml操作的基础结构及其指针类型
xmlDoc xmlDocPtr 文档对象的结构体及其指针
xmlNode xmlNodePtr 节点对象的结构体及其指针
xmlAttr xmlAttrPtr 节点属性的结构体及其指针
xmlNs xmlNsPtr 节点命名空间的结构及其指针

  • 1
    点赞
  • 14
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值