许多事物符合80/20法则,libxml中也是20%的函数提供了80%的功能。下面的列表列出了libxml的主要函数及其用法说明。

1.   全局函数说明

头文件引用

xml2config --cflags

库文件引用

xml2config --libs

主要头文件

parse.h

tree.h

xpath.h

简单例程

Makefile:

INCLUDE=-I./ -I$HOME/include `xml2config --cflags`

LIBRARY=-L./ -L$HOME/lib `xml2config --libs`

*.c或*.cpp

#include <libxml/parse.h>

#include <libxml/tree.h>

#include <libxml/xpath.h>

函数功能

在分析XML数据是,去除空白字符。如果不去除空白字符,则这些字符也会被当做一个node来处理

函数接口

int  xmlKeepBlanksDefault(int val)

参数说明

val:0或者1。0表示去除空白字符,1表示不去除

返回值:0表示设置失败,1表示设置成功,一般不用判断

简单例程

xmlKeepBlanksDefault(0);

2.   XML文件载入和保存函数

函数功能

将XML文件从硬盘上载入到内存中,并且生成DOM树。使用完毕之后,需要用xmlFreeDoc()来释放资源

函数接口

xmlDocPtr xmlParseFile(const char * filename)

参数说明

filename:XML文件名称。

返回值:如果载入成功,则返回这个文档的根节点。否则返回NULL

简单例程

xmlDodPtr pdoc;

pdoc = xmlParseFile("123.xml");

if( pdoc == NULL )

{

printf("Fail to parse XML file.\n");

}

函数功能

将内存中的DOM树,保存到硬盘上,生成一个带格式的XML文件

函数接口

int  xmlSaveFormatFileEnc(const char * filename,  xmlDocPtr cur,

const char * encoding, int format)

参数说明

filename:需要保存的文件的名称

cur:需要保存的XML文档

encoding:导出文件的编码类型,或者为NULL

format:是否格式化。0表示不格式化,1表示需要格式化。注意:只有当xmlIndentTreeOutput设置为1,或者xmlKeepBlanksDefault(0)时,format设置为1才能生效

返回值:写入文件中的字节数量

简单例程

xmlDodPtr pdoc;

pdoc = xmlParseFile("123.xml");

if( pdoc == NULL )

{

printf("Fail to parse XML file.\n");

}

Do_something_with_pdoc();

int filesize;

filesize = xmlSaveFormatFileEnc("321.xml", pdoc, "gb2312",1);

if(filesize == -1)

{

printf("Fail to save XML to file.\n");

}

3.   XML内存载入和输出函数

函数功能

将一块内存中的XML数据生成一个DOM树。使用完毕之后,需要用xmlFreeDoc()来释放资源

函数接口

xmlDocPtr xmlParseMemory(const char * buffer, int size)

参数说明

buffer:存放XML格式数据的内存区

size:内存中XML格式数据的长度

返回值:如果载入成功,则返回这个文档的根节点;否则返回NULL

简单例程

char *buffer;

int size;

xmlDocPtr pdoc;

// read_data_to_buffer

buffer = ……

size = strlen(buffer);

pdoc = xmlParseMemory(buffer, size);

if( pdoc == NULL)

{

printf("Fail to parse XML buffer.\n");

}

函数功能

将DOM树导出到内存中,形成一个XML格式的数据

函数接口

void xmlDocDumpFormatMemoryEnc(xmlDocPtr out_doc, xmlChar ** doc_txt_ptr,

int * doc_txt_len, const char * txt_encoding, int format)

参数说明

out_doc:需要输出成为一个buffer的XML文档

doc_txt_ptr:输出文档的内存区。由该函数在内部申请。使用完成之后,必须调用xmlFree()函数来释放该内存块

doc_txt_len:输出文档内存区的长度

txt_encoding:输出文档的编码类型

format:是否格式化。0表示不格式化,1表示需要格式化。注意只有当xmlIndentTreeOutput设置为1,或者xmlKeepBlanksDefault(0)时,format设置为1才能生效

简单例程

xmlChar *outbuf;

int outlen;

xmlDocPtr pdoc;

pdoc = ……

xmlDocDumpFormatMemoryEnc(pdoc, &outbuf, &outlen, "gb2312", 1);

xmlFree(outbuf);

libxml主要函数说明 (一)相关推荐

  1. libxml主要函数说明

    许多事物符合80/20法则,libxml中也是20%的函数提供了80%的功能.下面的列表列出了libxml的主要函数及其用法说明. 1.   全局函数说明 头文件引用 xml2config --cfl ...

  2. libxml -- 解析 XML 文档

    参考 http://xmlsoft.org/ http://www.miidoo.cn/info_detail-204.html http://www.blogjava.net/wxb_nudt/ar ...

  3. libxml解析xml文件的一些总结

    libxml -- 解析 XML 文档 XML 介绍:XML 和 DOM libxml 介绍 数据类型 - xmlChar数据结构 创建 XML 文档解析 XML 文档修改 xml 文档 Xpath ...

  4. c语言中shmget相关函数,共享内存函数(shmget、shmat、shmdt、shmctl)及其范例 - guoping16的专栏 - 博客频道 - CSDN...

    2014年4月2日共享内存函数(shmget.shmat.shmdt.shmctl)及其范例 - guoping16的专栏 - 博客频道 - http://doc.xuehai.net 登录 | 注册 ...

  5. libxml2中处理中文

    在上篇中简单介绍了libxml2读写XML文件. 本篇将介绍如何在libxml2中读写中文数据. libxml2中提供了编解码器,通过建立自己的编码接口由libxml根据当前编码进行调用,实质上是使用 ...

  6. XML---(2)LIBXML2库Linux使用指南

    libxml(一)                                      摘要 Libxml是一个有免费许可的用于处理XML.可以轻松跨越多个平台的C语言库.这个指南提供它的基本函 ...

  7. 基于c的xml文件解析(转)

    libxml(一) 摘要 Libxml是个有免费许可的用于处理XML.能轻松跨越多个平台的C语言库.这个指南提供他的基本函数的例子. 绪论 Libxml是个实现读.创建及操纵XML数据功能的C语言库. ...

  8. W3c phpl基础参考手册-2016-01参考

    php Array Calendar Date Directory Error Filesystem Filter FTP HTTP LibXML Mail Math MySQL SimpleXML ...

  9. libxml库之xmlParseMemory和xmlDocDumpFormatMemory函数

    两个函数,怎么在内存中处理xml文件.有个疑问,xmlChar *xmlbuff;这样系统第一次分配了xmlbuff的大小以后.对xml做修改,可以成功吗. 有空试试. 函数原型: xmlParseM ...

  10. php的libxml函数

    打算给初学者分享下微信,从头看微信文档,解析xml时,出现了一个函数:libxml_disable_entity_loader(),没见过... 就决定简单的了解下,可查看我转载的文章: XML注入攻 ...

最新文章

  1. legend位置 pyecharts_实验|pyecharts数据可视化分析-1
  2. java super()方法_Java super关键字的使用方法详解
  3. Python嵌套列表解析式(又称列表推导式)写法剖析与应用举例
  4. mysql增量_mysql实时增量备份
  5. HTML5-画布(canvas)效果之-渐变色
  6. redux 简明学习
  7. 实践 | 在MySql中,这四种方法可以避免重复插入数据!
  8. [Swift通天遁地]二、表格表单-(14)实时调整表单元素的激活和失效
  9. html密码框输入内容隐藏,密码框显示提示文字的功能实现
  10. 心路历程(四)-我的2015
  11. 银行即将关闭直接代扣通道,第三方支付有麻烦了
  12. Scala对象 转Json字符串
  13. win10计算机的数字小键盘,Win10开机默认开启数字小键盘的方法
  14. 51单片机带闹钟c语言程序,51单片机编写的闹钟程序
  15. Pycharm 教育版下载/安装 无需注册破解
  16. 转载:Fiddler 教程
  17. Ac4GlcNAz,98924-81-3,N-乙酰葡糖胺叠氮基,可以进行糖化学修饰
  18. 球重力异常matlab程序,球体重力异常正演程序介绍.docx
  19. 计算机辅助普通话水平证书要考吗,目前普通话证书考试都是机器测试吗?
  20. python:pyinstaller打包可执行文件

热门文章

  1. 2010年11.30日 爱普生 武昌培训 Technical workshop OPOS INSTALL
  2. 使用highcharts绘制图表,如何在tooltip里显示服务器端的其他数据
  3. 虚拟机外接USB设备情况的vMotion问题
  4. 【基础知识】【中缀转逆波兰(后缀)表达式】
  5. Centos6.5 x86_64系统安装kvm虚拟机—基础篇
  6. ISA 2000与ISA 2004的区别
  7. Java在 list 中对每个元素遍历其是否在原 list 中有相同元素的方法
  8. Golang研学:defer!如何掌握并用好(延迟执行)
  9. 3.代码托管仓库 - GitHub
  10. postman 使用