许多事物符合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); |