跨平台解析XML文件 XmlNode V1.01测试版
//XmlNode.h
//版本:V1.01测试版
//为帮助作者完善XmlNode,希望大家讲错误发送给作者,以完善其功能
#ifndef XML_NODE_H
#define XML_NODE_H
#define XML_OBJECT_TYPE_ERROR 0x00 //节点类型错误
#define XML_OBJECT_TYPE_DOCUMENT 0x01 //节点类型为文档,即为xml根节点,用于记录文件路径
#define XML_OBJECT_TYPE_DECLARATION 0x02 //节点类型为描述
#define XML_OBJECT_TYPE_ATTRIBUTE 0x03 //节点类型为属性
#define XML_OBJECT_TYPE_COMMENT 0x04 //节点类型为注释
#define XML_OBJECT_TYPE_CHAR_DATA 0x05 //节点类型为不被解析的字符数据
#define XML_OBJECT_TYPE_ELEMENT 0x06 //节点类型为子节点
#define XML_OBJECT_TYPE_VALUE 0x07 //节点类型为值节点
#define XML_OBJECT_TYPE_MAX 0x07 //节点类型的最大值
#include
#include
using namespace std;
class __declspec(dllexport)CXmlNode
{
protected:
CXmlNode();
public:
~CXmlNode();
public:
/***************************************************
Type: static public
Explain: 获取作者信息
Return: 作者信息
***************************************************/
static string GetAuthorInfo();
/***************************************************
Type: static public
Explain: 获取版本信息
Return: 版本信息
***************************************************/
static string GetVersionInfo();
/***************************************************
Type: static public
Explain: 读取xml文件
Para: [in] sPath xml文件路径
Return: 根节点指针。
Mark: 当读取xml文件失败时,返回0
***************************************************/
static CXmlNode * LoadFile(string sPath);
/***************************************************
Type: public
Explain: 保存Xml文件
Para: [in] sPath xml文件路径,当sPath为空时,将默认保存在上次读取时的路径中
Return: 保存文件是否成功。
Mark: 如果当前节点为根节点,则记录的xml文件路径将被替换
如果当前节点不是跟节点,只保存当前节点和其所有子节点。为保证xml文件格式正确,将自动在Xml中添加声明
***************************************************/
bool SaveFile(string sPath);
/***************************************************
Type: public
Explain: 保存Xml文件
Return: 保存文件是否成功。
Mark: xml文件保存路径为已经设置的路径,默认为打开文件时的路径,也可以通过SetValue函数修改路径,详见SetValue函数说明
如果当前节点为根节点,则记录的xml文件路径将被替换
如果当前节点不是跟节点,只保存当前节点和其所有子节点。为保证xml文件格式正确,将自动在Xml中添加声明
**********************
iksemel-1.4 跨平台 解析 xml
iksemel是一个XML文件的解析器,最初是设计出来为Jabber应用服务的。
iksemel是用ANSI C语言实现的,任何 POSIX 兼容的系统上都能用,具有很高的可移植性。
它的使用是基于GPL协议的。
v1.2 解析XML文件 读取XML文件 保存XML文件 添加节点 删除节点 修改节点 添加属性 修改/删除属性
V1.2 Release版
如果需要源码可以发送邮件到sdiwen1982@sohu.com索取
/***************************************
功能:创建XML文件的根节点
参数:[in] sName 根节点的节点名
返回:true创建成功
false创建失败
**************************************/
bool CreateRootNode(CString sName);
/***************************************
功能:读取xml文件
参数:[in] xml文件路径
返回:true读取成功
false读取失败
**************************************/
bool ReadXml(CString sXmlPath /*xml文件路径*/);
/***************************************
功能:写入xml文件
参数:[in] xml文件路径
返回:true写入成功
false写入失败
**************************************/
bool WriteXml(CString sXmlPath /*xml文件路径*/);
/***************************************
功能:释放空间
参数:无
返回:无
**************************************/
void Release();
/***************************************
功能:删除指定的节点
参数:无
返回:true删除成功
false删除失败
**************************************/
bool DeleteNode();
/***************************************
功能:删除当前节点的所有子节点,当前节点不删除
参数:无
返回:true删除成功
false删除失败
**************************************/
bool DeleteAllSon();
/***************************************
功能:根据索引删除子节点
参数:无
返回:true删除成功
false删除失败
**************************************/
bool DeleteSonByIndex(unsigned int nIndex);
/***************************************
功能:删除节点所有属性
参数:无
返回:true删除成功
false删除失败
**************************************/
bool DeleteAllAttr();
/***************************************
功能:根据属性名删除属性
参数:无
返回:true删除成功
false删除失败
**************************************/
bool DeleteAttrByName(CString sName);
/***************************************
功能:根据索引删除属性
参数:无
返回:true删除成功
false删除失败
**************************************/
bool DeleteAttrByIndex(unsigned int nIndex);
/***************************************
功能:根据属性名设置属性值
参数:[in] sName 属性名
[in] sValue 属性值
返回:true设置成功
false设置失败
**************************************/
bool SetAttrValueByName(CString sName, CString sValue);
/***************************************
功能:插入属性
参数:[in] sName 属性名
[in] sValue 属性值
返回:true插入成功
false插入失败
**************************************/
bool InsertAttr(CString sName, CString sValue);
/***************************************
功能:设置节点值
参数:[in] sValue 属性值
返回:true设置节点值成功
false设置节点值失败
**************************************/
bool SetNodeValue(CString sValue);
/***************************************
功能:插入子节点
参数:[in] sName 节点名
返回:非空表示插入节点成功,返回插入的新节点指针
空表示插入失败
**************************************/
CXMLNode * InsertNode(CString sName);
/***************************************
功能:判断是否存在子节点
参数:[in] pNode 子节点文件指针,
返回:false没有子节点
true有子节点
**************************************/
bool HasChild(MSXML2::IXMLDOMNodePtr pNode);
解析XML文件 读取XML文件 保存XML文件 添加节点 删除节点 修改节点 添加属性 修改属性 删除属性
如果需要源码可以发送邮件到sdiwen1982@sohu.com索取
/***************************************
功能:读取xml文件
参数:[in] xml文件路径
返回:true读取成功
false读取失败
**************************************/
bool ReadXml(CString sXmlPath /*xml文件路径*/);
/***************************************
功能:写入xml文件
参数:[in] xml文件路径
返回:true写入成功
false写入失败
**************************************/
bool WriteXml(CString sXmlPath /*xml文件路径*/);
/***************************************
功能:释放空间
参数:无
返回:无
**************************************/
void Release();
/***************************************
功能:删除指定的节点
参数:无
返回:true删除成功
false删除失败
**************************************/
bool DeleteNode();
/***************************************
功能:删除当前节点的所有子节点,当前节点不删除
参数:无
返回:true删除成功
false删除失败
**************************************/
bool DeleteAllSon();
/***************************************
功能:根据索引删除子节点
参数:无
返回:true删除成功
false删除失败
**************************************/
bool DeleteSonByIndex(unsigned int nIndex);
/***************************************
功能:删除节点所有属性
参数:无
返回:true删除成功
false删除失败
**************************************/
bool DeleteAllAttr();
/***************************************
功能:根据属性名删除属性
参数:无
返回:true删除成功
false删除失败
**************************************/
bool DeleteAttrByName(CString sName);
/***************************************
功能:根据索引删除属性
参数:无
返回:true删除成功
false删除失败
**************************************/
bool DeleteAttrByIndex(unsigned int nIndex);
/***************************************
功能:根据属性名设置属性值
参数:[in] sName 属性名
[in] sValue 属性值
返回:true设置成功
false设置失败
**************************************/
bool SetAttrValueByName(CString sName, CString sValue);
/***************************************
功能:插入属性
参数:[in] sName 属性名
[in] sValue 属性值
返回:true插入成功
false插入失败
**************************************/
bool InsertAttr(CString sName, CString sValue);
/***************************************
功能:设置节点值
参数:[in] sValue 属性值
返回:true设置节点值成功
false设置节点值失败
**************************************/
bool SetNodeValue(CString sValue);
/***************************************
功能:插入子节点
参数:[in] sName 节点名
返回:非空表示插入节点成功,返回插入的新节点指针
空表示插入失败
**************************************/
CXMLNode * InsertNode(CString sName);
/***************************************
功能:判断是否存在子节点
参数:[in] pNode 子节点文件指针,
返回:false没有子节点
true有子节点
**************************************/
bool HasChild(MSXML2::IXMLDOMNodePtr pNode);
重载树控件CTreeCtrl,v1.1
如需要源代码,请发邮件给我。动态库中提供获取作者的Email接口函数
public:
//功能:获取作者邮箱
//输入:无
//输出:无
//返回:作者信息
CString GetAutherEmail();
//功能:判断输入的节点句柄是否存在
//参数:[in] hItem 节点句柄
//返回:true节点存在,false节点不存在
bool FindItemExist(HTREEITEM hItem);
//功能:设置一个节点字体颜色
//参数:[in] hItem 节点句柄
// [in] clrText 节点字体颜色
//返回:true设置字体颜色成功,false设置字体颜色失败
//注:内部不包含刷新
bool SetItemTextColor(HTREEITEM hItem, COLORREF clrText);
//功能:获取一个节点字体颜色
//参数:[in] hItem 节点句柄
// [out] clrText 节点字体颜色
//返回:true获取字体颜色成功,false获取字体颜色失败
//注:内部不包含刷新
bool GetItemTextColor(HTREEITEM hItem, COLORREF &clrText;);
//功能:设置扩展按钮的边框颜色
//参数:[in] clrButtonBorder 扩展按钮的边框颜色
//返回:无
//注:内部包含刷新
void SetExpandedButtonBorder(COLORREF clrButtonBorder);
//功能:设置扩展按钮的十字颜色
//参数:[in] clrButtonCross 扩展按钮的十字颜色
//返回:无
//注:内部包含刷新
void SetExpandedButtonCross(COLORREF clrButtonCross);
//功能:刷新背景
//输入:无
//输出:无
void RedrawTreeCtrl();
//功能:设置画线的样式
//输入:[in] nPenStyle 画线样式
// [in] nWidth 画线宽度
// [in] crColor 画线颜色
//返回:无
//注:内部包含刷新
void SetPenLineStyle(int nPenStyle, int nWidth, COLORREF crColor);
protected:
//功能:判断输入的节点句柄是否存在
//参数:[in] hItem 节点句柄
//返回:true节点存在,false节点不存在
bool FindChildItemExist(HTREEITEM hParantItem, HTREEITEM hItem);
//功能:绘制文字
//参数:[in] pDC 设备DC
//返回:无
void OnDrawText(CDC *pDC);
//功能:绘制一个节点文字
//参数:[in] pDC 设备DC
// [in] hItem 节点句柄
//返回:true成功,false失败
bool OnDrawItemText(CDC *pDC, HTREEITEM hItem);
//功能:绘制展开按钮
//参数:[in] pDC 设备DC
//返回:无
void OnDrawButton(CDC *pDC);
//功能:绘制一个节点展开按钮
//参数:[in] pDC 设备DC
// [in] hItem 节点句柄
//返回:true成功,false失败
bool OnDrawItemButton(CDC *pDC, HTREEITEM hItem);
//功能:绘制一个节点展开按钮(节点展开)
//参数:[in] pDC 设备DC
// [in] hItem 节点句柄
//返回:true成功,false失败
bool OnDrawItemButtonExpanded(CDC *pDC, HTREEITEM hItem);
//功能:绘制一个节点展开按钮(节点未展开)
//参数:[in] pDC 设备DC
// [in] hItem 节点句柄
//返回:true成功,false失败
bool OnDrawItemButtonNotExpanded(CDC *pDC, HTREEITEM hItem);
//功能:绘制节点连接线
//参数:[in] pDC 设备DC
//返回:无
void OnDrawLines(CDC *pDC);
//功能:绘制根节点连接线
//参数:[in] pDC 设备DC
//返回:无
void OnDrawItemLines(CDC *pDC, HTREEITEM hItem);
private:
//功能:获取画线的区域(排除扩展按钮的区域)
//参数:无
//返回:创建的画线的区域
void CreateRgnForDrawLines(CRgn &rgnDraw;);
重载静态文本控件CStatic,支持背景贴图和透明,v1.2
重载静态文本控件,如果需要新的功能,请获取作者邮箱,发邮件给我,我将第一时间为您添加接口
//功能:获取作者邮箱
//输入:无
//输出:无
//返回:作者信息
//注:内部已经刷新
CString GetAutherEmail();
//功能:设置字体大小
//输入:lfHeight字体大小,单位为像素,不能为负数,当为0时表示采用系统默认大小
//输出:无
//注:内部已经刷新
void SetTextHeight(LONG lfHeight = 0);
//功能:设置字体宽度
//输入:lfWidth字体宽度,单位为像素,不能为负数,当为0时表示采用系统默认大小
//输出:无
//注:内部已经刷新
void SetTextWidth(LONG lfWidth = 0);
//功能:设置字体颜色
//输入:clrText字体颜色
//输出:无
//注:内部已经刷新
void SetTextColor(COLORREF clrText);
//功能:设置字体粗细
//输入:lfWeight粗细的数值,范围为0-1000,当为0时表示默认
//输出:无
//注:内部已经刷新,当数值小于0或大于1000时,都自动设置为0,表示采用默认值
void SetTextWeight(LONG lfWeight);
//功能:设置字体是否为斜体
//输入:bItalic是否为斜体,true为斜体,false为非斜体
//输出:无
//注:内部已经刷新
void SetTextItalic(bool bItalic);
//功能:设置字体指定每一行文本输出时相对于页面底端的角度。
//输入:lfEscapement以十分之一度为单位指定每一行文本输出时相对于页面底端的角度。
//输出:无
//注:内部已经刷新,逆时针为正,顺时针为负
void SetTextEscapement(LONG lfEscapement);
//功能:设置字体指定字符基线相对于页面底端的角度。
//输入:lfOrientation以十分之一度为单位指定字符基线相对于页面底端的角度。
//输出:无
//注:内部已经刷新,逆时针为正,顺时针为负
void SetTextOrientation(LONG lfOrientation);
//功能:设置字体是否带下划线。
//输入:bUnderline是否带下划线,true为带下划线,false为不带下划线。
//输出:无
//注:内部已经刷新
void SetTextUnderline(bool bUnderline);
//功能:设置字体是否带删除线。
//输入:bUnderline是否带删除线,true为带删除线,false为不带删除线。
//输出:无
//注:内部已经刷新
void SetTextStrikeOut(bool bStrikeOut);
//功能:设置字体名字。
//输入:sFaceName字体名字。
//输出:无
//注:内部已经刷新
//王彬 20120710
void SetTextFaceName(CString sFaceName);
//功能:设置字体字符集。
//输入:lfCharSet字体字符集,通常情况对于中文的Windows系统,也可以直接用DEFAULT_CHARSET表示默认字符集
// 英文字体可以用ANSI_CHARSET,简体中文字体可以用GB2312_CHARSET,繁体中文字体可以用CHINESEBIG5_CHARSET
//输出:无
//注:内部已经刷新
//王彬 20120710
void SetTextCharSet(BYTE lfCharSet);
//功能:字体样式采用系统默认
//输入:无
//输出:无
//注:内部已经刷新
void SetTextDefault();
//功能:设置对齐方式
//输入:dwAlign对齐方式 ALIGN_LEFT 左对齐,ALIGN_RIGHT 右对齐,ALIGN_MIDDLE 水平居中对齐
//ALIGN_TOP 上对齐,ALIGN_BOTTOM 底对齐,ALIGN_VCENTER 垂直居中对齐, ALIGN_CENTER 水平垂直居中对齐
//输出:无
//注:内部已经刷新,垂直居中和底部对齐只能为一行
void SetAlign(DWORD dwAlign);
//功能:设置背景图片
//输入:sPicPath 图片路径, nMode为贴图方式
//输出:无
//注:内部已经刷新
bool SetBKPicture(CString sPicPath, DWORD dwMode);
//功能:设置背景图片过滤色(屏蔽指定颜色)
//输入:clrFiltrate过滤色
//输出:无
//注:内部已经刷新
void SetPictureFiltrateColor(COLORREF clrFiltrate);
//功能:设置背景是否贴图
//输入:bShow是否背景贴图, true为贴图, false为不贴图
//输出:无
//注:内部已经刷新
bool ShowPicture(bool bShow);
//功能:设置背景颜色
//输入:clrBK背景颜色
//输出:无
//注:内部已经刷新
void SetBKColor(COLORREF clrBK);
//功能:设置背景透明
//输入:无
//输出:无
//注:内部已经刷新
void SetBKTransparent();
//功能:刷新背景
//输入:无
//输出:无
void RedrawStatic();
//功能:绘制边框
//输入:nWidth边框宽度,clrBorder边框颜色
//输出:无
//注:当nWidth<=0时,表示不绘制边框
void SetBorder(int nWidth, COLORREF clrBorder = RGB(0,0,0));
//功能:设置默认的背景样式
//输入:无
//输出:无
//注:内部已经刷新
void SetBKDefault();
重载静态文本控件CStatic,支持背景贴图和透明,v1.1
重载静态文本控件,功能如下
//功能:设置字体大小
//输入:lfHeight字体大小,单位为像素,不能为负数,当为0时表示采用系统默认大小
//输出:无
//注:内部已经刷新
//王彬 20120710
void SetTextHeight(LONG lfHeight = 0);
//功能:设置字体宽度
//输入:lfWidth字体宽度,单位为像素,不能为负数,当为0时表示采用系统默认大小
//输出:无
//注:内部已经刷新
//王彬 20120710
void SetTextWidth(LONG lfWidth = 0);
//功能:设置字体颜色
//输入:clrText字体颜色
//输出:无
//注:内部已经刷新
//王彬 20120710
void SetTextColor(COLORREF clrText);
//功能:设置字体粗细
//输入:lfWeight粗细的数值,范围为0-1000,当为0时表示默认
//输出:无
//注:内部已经刷新,当数值小于0或大于1000时,都自动设置为0,表示采用默认值
//王彬 20120710
void SetTextWeight(LONG lfWeight);
//功能:设置字体是否为斜体
//输入:bItalic是否为斜体,true为斜体,false为非斜体
//输出:无
//注:内部已经刷新
//王彬 20120710
void SetTextItalic(bool bItalic);
//功能:设置字体指定每一行文本输出时相对于页面底端的角度。
//输入:lfEscapement以十分之一度为单位指定每一行文本输出时相对于页面底端的角度。
//输出:无
//注:内部已经刷新,逆时针为正,顺时针为负
//王彬 20120710
void SetTextEscapement(LONG lfEscapement);
//功能:设置字体指定字符基线相对于页面底端的角度。
//输入:lfOrientation以十分之一度为单位指定字符基线相对于页面底端的角度。
//输出:无
//注:内部已经刷新,逆时针为正,顺时针为负
//王彬 20120710
void SetTextOrientation(LONG lfOrientation);
//功能:设置字体是否带下划线。
//输入:bUnderline是否带下划线,true为带下划线,false为不带下划线。
//输出:无
//注:内部已经刷新
//王彬 20120710
void SetTextUnderline(bool bUnderline);
//功能:设置字体是否带删除线。
//输入:bUnderline是否带删除线,true为带删除线,false为不带删除线。
//输出:无
//注:内部已经刷新
//王彬 20120710
void SetTextStrikeOut(bool bStrikeOut);
//功能:设置字体名字。
//输入:sFaceName字体名字。
//输出:无
//注:内部已经刷新
//王彬 20120710
void SetTextFaceName(CString sFaceName);
//功能:设置字体字符集。
//输入:lfCharSet字体字符集,通常情况对于中文的Windows系统,也可以直接用DEFAULT_CHARSET表示默认字符集
// 英文字体可以用ANSI_CHARSET,简体中文字体可以用GB2312_CHARSET,繁体中文字体可以用CHINESEBIG5_CHARSET
//输出:无
//注:内部已经刷新
//王彬 20120710
void SetTextCharSet(BYTE lfCharSet);
//功能:字体样式采用系统默认
//输入:无
//输出:无
//注:内部已经刷新
//王彬 20120711
void SetTextDefault();
//功能:设置对齐方式
//输入:dwAlign对齐方式 ALIGN_LEFT 左对齐,ALIGN_RIGHT 右对齐,ALIGN_MIDDLE 水平居中对齐
//ALIGN_TOP 上对齐,ALIGN_BOTTOM 底对齐,ALIGN_VCENTER 垂直居中对齐, ALIGN_CENTER 水平垂直居中对齐
//输出:无
//注:内部已经刷新,垂直居中和底部对齐只能为一行
//王彬 20120711
void SetAlign(DWORD dwAlign);
//功能:设置背景图片
//输入:sPicPath 图片路径, nMode为贴图方式
//输出:无
//注:内部已经刷新
//王彬 20120711
bool SetBKPicture(CString sPicPath, DWORD dwMode);
//功能:设置背景是否贴图
//输入:bShow是否背景贴图, true为贴图, false为不贴图
//输出:无
//注:内部已经刷新
//王彬 20120711
bool ShowPicture(bool bShow);
//功能:设置背景颜色
//输入:clrBK背景颜色
//输出:无
//注:内部已经刷新
//王彬 20120711
void SetBKColor(COLORREF clrBK);
//功能:设置背景透明
//输入:无
//输出:无
//注:内部已经刷新
//王彬 20120711
void SetBKTransparent();
//功能:刷新背景
//输入:无
//输出:无
//王彬 20120712
void RedrawStatic();
//功能:绘制边框
//输入:nWidth边框宽度,clrBorder边框颜色
//输出:无
//王彬 20120714
void SetBorder(int nWidth, COLORREF clrBorder);
测试新手学习宝典——软件测试初学
本文面向软件测试新手,从测试前的准备工作、测试需求收集、测试用例设计、测试用例执行、测试结果分析几个方面给出建议和方法。鉴于国内的软件开发、测试不规范的现状,本文为软件测试新手提供了若干个软件测试的关注点。
UML with Rational Rose 从入门到精通
本书深入浅出地介绍了统一建模语言(UML)和Rational Rose软件,通过ATM和订单处理例子介绍如何用UML和Rose进行项目需求分析、结构规划和生成框架代码,以及如何从现有系统逆向转出工程代码,生成Rose模型,并分章介绍了C++、Java、Visual Basic、PowerBuilder和IDL的代码生成与逆向转出工程代码。通过本书学习,项目开发人员可以用这个全新工具紧扣用户需求,方便地开发出符合用户需求的系统或根据用户需求对现有系统进行改造。
本书适合项目开发人员参考,也适合作为大学教材或自学材料。