xml.h
资源名称:Client.rar [点击查看]
上传用户:szjkjd
上传日期:2022-06-27
资源大小:8968k
文件大小:10k
源码类别:
浏览器
开发平台:
Visual C++
- /***********************************************************************
- *
- * 注意:
- * 1. 所有函数参数、返回值的字符串都应该是UTF-8的格式
- * 2. 执行xml_select_nodes之后,如果再执行除
- * xml_read_set_prop、xml_read_set_content、
- * xml_write_set_prop、xml_write_set_content之外的函数,
- * 结构体中的上下文信息会被破坏。
- *
- * 作者:庾庆达 日期:2008-8-1
- ***********************************************************************/
- #ifndef _LIB_DB_XML_H_
- #define _LIB_DB_XML_H_
- #include "libxmlxpath.h"
- #include "libxmlparser.h"
- #include "list.h"
- typedef struct _XMLStr TXMLStr;
- struct _XMLStr
- {
- FIFO_ENTRY(TXMLStr) node;
- char *str;
- };
- typedef struct _XML TXML;
- struct _XML
- {
- xmlDocPtr doc;
- char *filename;
- char *encoding;
- xmlXPathObjectPtr object;
- FIFO(TXMLStr) rubbish;
- };
- #ifdef __cplusplus
- extern "C" {
- #endif
- /***********************************************************************
- * 功能: 创建新的xml实例
- * @filename : 文件路径, 该参数可以为NULL
- * @encoding : XML文件编码
- * @root : 根节点名称
- * 返回值 : 成功返回xml实例, 失败返回NULL
- **********************************************************************/
- TXML *xml_create(const char *filename, const char *encoding, const char *root);
- /***********************************************************************
- * 功能: 读取xml文件
- * @filename : 文件路径
- * 返回值 : 成功返回xml实例, 失败返回NULL
- **********************************************************************/
- TXML *xml_create_file(const char *filename);
- /***********************************************************************
- * 功能: 从内存中加载xml
- * @buffer : xml所在缓冲区
- * @size : buffer大小
- * 返回值 : 成功返回xml实例, 失败返回NULL
- **********************************************************************/
- TXML *xml_create_memory(const char *buffer, size_t size);
- /***********************************************************************
- * 功能: 内存清理.(该函数会被xml_free调用)
- * @xml : xml实例
- **********************************************************************/
- void xml_cleanup(TXML *xml);
- /***********************************************************************
- * 功能: 释放xml实例.
- * @xml : xml实例
- **********************************************************************/
- void xml_close(TXML *xml);
- /***********************************************************************
- * 功能: 保存xml实例到文件中
- * @xml : xml实例
- * 返回值 : 0 - 成功, other - 失败
- * 注意 : 不能用于xml_create_memory和xml_create参数filename为
- * NULL时创建的xml实例
- **********************************************************************/
- int xml_save(TXML *xml);
- /***********************************************************************
- * 功能: 保存xml实例到文件中
- * @xml : xml实例
- * @filename : 保存路径
- * 返回值 : 0 - 成功, other - 失败
- **********************************************************************/
- int xml_save_to(TXML *xml, const char *filename);
- /***********************************************************************
- * 功能: 保存xml实例到文件中,然后释放xml实例
- * @xml : xml实例
- * 返回值: 0 - 成功, other - 失败
- * 注意 : 不能用于xml_create_memory创建的xml实例。
- * 即使保存失败, xml实例同样被关闭。
- **********************************************************************/
- int xml_save_close(TXML *xml);
- ///////////////////////////////////////////////////////////////////////
- ///////////////////////////////////////////////////////////////////////
- ///////////////////////////////////////////////////////////////////////
- /***********************************************************************
- * 功能: 执行xpath查询,以获取节点集合
- * @xml : xml实例
- * @xpath : xpath语句
- * 返回值 : 成功返回节点个数, 失败返回-1
- **********************************************************************/
- int xml_select_nodes(TXML *xml, const char *xpath);
- /***********************************************************************
- * 功能: 获取调用xml_do_xpath后获得的节点集合中节点属性
- * @xml : xml实例
- * @index : 节点序号(从0开始)
- * @name : 属性名称
- * 返回值 : 成功返回属性值, 失败返回NULL
- **********************************************************************/
- char *xml_read_set_prop(TXML *xml, const int index, const char *name);
- /***********************************************************************
- * 功能: 获取调用xml_select_nodes后获得的节点集合中节点注释
- * @xml : xml实例
- * @index : 节点序号(从0开始)
- * 返回值 : 成功返回注释值, 失败返回NULL
- **********************************************************************/
- char *xml_read_set_content(TXML *xml, const int index);
- /***********************************************************************
- * 功能: 新增或修改调用xml_select_nodes后获得的节点集合中节点属性
- * @xml : xml实例
- * @index : 节点序号(从0开始)
- * @name : 属性名称
- * @value : 属性值
- * 返回值 : 0 - 成功, other - 失败
- **********************************************************************/
- int xml_write_set_prop(TXML *xml, const int index, const char *name, const char *value);
- /***********************************************************************
- * 功能: 新增或修改调用xml_select_nodes后获得的节点集合中节点正文
- * @xml : xml实例
- * @index : 节点序号(从0开始)
- * 返回值 : 成功返回注释值, 失败返回NULL
- **********************************************************************/
- int xml_write_set_content(TXML *xml, const int index, const char *value);
- /***********************************************************************
- * 功能: 获取符合xpath的首个节点的属性值
- * @xml : xml实例
- * @xpath : xpath路径
- * @name : 属性名称
- * 返回值 : 成功返回属性值, 失败返回NULL
- **********************************************************************/
- char *xml_read_item_prop(TXML *xml, const char *xpath, const char *name);
- /***********************************************************************
- * 功能: 获取符合xpath的首个节点的注释
- * @xml : xml实例
- * @index : 节点序号(从0开始)
- * 返回值 : 成功返回注释值, 失败返回NULL
- **********************************************************************/
- char *xml_read_item_content(TXML *xml, const char *xpath);
- /***********************************************************************
- * 功能: 新增或修改符合xpath的首个节点的属性值
- * @xml : xml实例
- * @xpath : xpath路径
- * @name : 属性名称
- * 返回值 : 成功返回属性值, 失败返回NULL
- **********************************************************************/
- int xml_write_item_prop(TXML *xml, const char *xpath, const char *name, const char *value);
- /***********************************************************************
- * 功能: 新增或修改符合xpath的首个节点的注释
- * @xml : xml实例
- * @index : 节点序号(从0开始)
- * 返回值 : 成功返回注释值, 失败返回NULL
- **********************************************************************/
- int xml_write_item_content(TXML *xml, const char *xpath, const char *value);
- ///////////////////////////////////////////////////////////////////////
- ///////////////////////////////////////////////////////////////////////
- ///////////////////////////////////////////////////////////////////////
- /***********************************************************************
- * 功能: 为符合xpath的节点新增子节点
- * @xml : xml实例
- * @xpath : xpath语句
- * @name : 新增节点名称
- * @... : 新增节点的属性名、属性值、...、最后是注释,然后是NULL.
- * 属性名和属性值必须成对出现。
- * 返回值 : 0 - 成功, other - 失败返回NULL
- * 注意 : xpath匹配多个节点会导致函数执行失败.
- **********************************************************************/
- int xml_add_child(TXML *xml, const char *xpath, const char *name, ...);
- /***********************************************************************
- * 功能: 为符合xpath的节点之前新增一个兄弟节点
- * @xml : xml实例
- * @xpath : xpath语句
- * @name : 新增节点名称
- * @... : 新增节点的属性名、属性值、...、最后是注释,然后是NULL.
- * 属性名和属性值必须成对出现。
- * 返回值 : 0 - 成功,other - 失败
- * 注意 : xpath匹配多个节点会导致函数执行失败.
- **********************************************************************/
- int xml_add_prev_sibling(TXML *xml, const char *xpath, const char *name, ...);
- /***********************************************************************
- * 功能: 为符合xpath的节点之后新增兄弟节点
- * @xml : xml实例
- * @xpath : xpath语句
- * @name : 新增节点名称
- * @... : 新增节点的属性名、属性值、...、最后是注释,然后是NULL.
- * 属性名和属性值必须成对出现。
- * 返回值 : 0 - 成功,other - 失败
- * 注意 : xpath匹配多个节点会导致函数执行失败.
- **********************************************************************/
- int xml_add_next_sibling(TXML *xml, const char *xpath, const char *name, ...);
- /***********************************************************************
- * 功能: 为符合xpath的节点新增子节点
- * @xml : xml实例
- * @xpath : xpath语句
- * @name : 新增节点名称
- * @... : 新增节点的属性名、属性值、...、最后是注释,然后是NULL.
- * 属性名和属性值必须成对出现。
- * 返回值 : 0 - 成功,other - 失败
- * 注意 : xpath匹配多个节点会导致函数执行失败.
- **********************************************************************/
- int xml_add_sibling(TXML *xml, const char *xpath, const char *name, ...);
- /***********************************************************************
- * 功能: 移除所有符合xpath的节点
- * @xml : xml实例
- * @xpath : xpath语句
- * 返回值 : 0 - 成功, other - 失败
- **********************************************************************/
- int xml_remove(TXML *xml, const char *xpath);
- #ifdef __cplusplus
- }
- #endif
- #endif
- // vim: ts=8 sw=8 expandtab