简单的xml常用函数

1.   fopen

作用:用来打开一个文件,调用形式为:文件指针名=fopen(文件名,使用文件方式)

“文件指针名“必须是被说明为FILE类型的指针变量

“文件名“是被打开文件的文件名,是字符串常量或字符串数组

“使用文件方式“是指文件的类型和操作要求

 

2.   xmlReadMemory(dest_gb18030,sizeof(dest_gb18030),szDocName,"UTF-8",XML_PARSE_RECOVER)

作用:从指针指向的位置开始读取内存

参数

Dest_gb18030  所要读取的指针指向的内存

Sizeofdest_gb18030)内存的大小

szDocName 指向解析文件指针

UTF-8 转换的类型

XML_PARSE_RECOVER 对文件进行重叠解析

3.   ReadFileHANDLE hFileLPVOIDlpBuffer,DWORD nNumberOfBytesToRead, LPDWORD lpNumberOfBytesRead, LPOVERLAPPEDlpOverlapped

作用:从指针指向的位置开始将数据读出到一个文件中,且支持同步和异步操作

参数

HANDLE hFile, 需要读入数据的文件指针,这个指针指向的文件必须是GENERIC_READ 访问属性的文件

LPVOID lpBuffer,接收数据的缓冲区

LPDWORD lpNumberOfBytesRead,指向一个DWORD类型变量的指针,用来接收读取的字节数。如果下一个参数为NULL,那么一定要传入这个参数

LPOVERLAPPED lpOverlapped OVERLAPPED结构体指针,如果文件是以FILE_FLAG_OVERLAPPED方式打开的话,那么这个指针就不能为NULL

FILE_FLAG_OVERLAPPED 允许对文件进行重叠操作

4.   Fprintf

作用:传送格式化输出到一个文件中

5.   xmlFreeDoc

作用:释放内存

6.   xmlStrcmpconst char *str1,const char* str2

作用:它对两个字符串进行比较,然后返回比较结果

Str1小于str2,返回负值或者-1

Str1等于str2,返回0

Str1大于str2返回正值或者1

 

### libxml2 解析 XML常用 API 函数 #### 初始化和清理 为了确保程序能够正确初始化并释放资源,可以使用如下函数: - `xmlInitParser()`:初始化全局变量和其他设置[^1]。 - `xmlCleanupParser()`:清理所有分配的内存以及关闭打开的文件。 #### 创建和读取文档对象 创建或加载XML文档时会频繁用到这些API: - `xmlReadFile(const char *URL, const char *encoding, int options)`:此方法接受三个参数——文件路径、字符集名称(可选)、选项标志位组合。成功执行后返回`xmlDocPtr`类型的指针指向新构建好的DOM树根部; 如果失败则返回NULL值。 ```c #include <libxml/parser.h> // ... xmlDocPtr doc; doc = xmlReadFile("example.xml", NULL, 0); if (doc == NULL ) { fprintf(stderr,"Document not parsed successfully. \n"); } ``` #### 获取节点信息 操作DOM树上的各个元素需要用到下面几个重要的接口之一: - `xmlGetRootElement(xmlDocPtr doc)` :取得当前文档最顶层(即根)元素作为起点来进行后续遍历工作[^2]。 - `xmlFirstElementChild(xmlNodePtr node)` : 返回给定父级下的第一个子元素节点[^3]。 - `xmlNextElementSibling(xmlNodePtr sibling)` : 查找同辈序列里的下一个兄弟姐妹成员[^4]。 ```c xmlNodePtr root_element = xmlDocGetRootElement(doc); for (xmlNodePtr current_node = root_element->children ;current_node != NULL;current_node=current_node->next){ if(current_node->type==XML_ELEMENT_NODE){ printf("node type: Element, name: %s\n", current_node->name); } } ``` #### 属性访问 对于属性的操作也有专门的方法支持: - `xmlNewProp(xmlNodePtr node, const xmlChar *name, const xmlChar *value)` : 向指定位置添加新的特性项。 - `xmlGetProp(xmlNodePtr node, const xmlChar *name)` : 提取出目标实体所携带的具体特征值得到一个字符串副本。 ```c xmlSetProp(root_element,(const xmlChar *)"id",(const xmlChar *)"v1"); printf("%s\n",xmlGetProp(root_element,(const xmlChar*)"id")); ``` #### 销毁文档对象 当不再需要某个已解析完成的对象实例时应该及时销毁它以防止泄露问题发生: - `xmlFreeDoc(xmlDocPtr cur)` : 清除整个文档及其关联的所有内部结构体占用的空间。 ```c xmlFreeDoc(doc); /* free document */ ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值