# XMLParamtersLib
**Repository Path**: xymys_c/XMLParamtersLib
## Basic Information
- **Project Name**: XMLParamtersLib
- **Description**: 基于XML的通信数据解析、反解析的库,使用C++/Qt开发
- **Primary Language**: C++
- **License**: Not specified
- **Default Branch**: master
- **Homepage**: None
- **GVP Project**: No
## Statistics
- **Stars**: 0
- **Forks**: 1
- **Created**: 2023-11-12
- **Last Updated**: 2023-11-12
## Categories & Tags
**Categories**: Uncategorized
**Tags**: None
## README
# XMLWithXPath
**Copyleft**
# 简介
XMLParamtersLib是基于XML化的参数解析库
# 功能介绍
基于XML化的参数解析可以完成
- 参数组成可通过XML配置文件动态生成
- 参数/二进制数据之间的序列化、反序列化
- 根据参数动态生成对应的控件
# 特性介绍
- 为了保持本库的通用性,XML节点的定义只针对参数的属性做了规定,参数节点名称默认为Param
参数定义示例:

```ParamItemReader```类提供了从XML节点```XMLResolve::stNodeInfo```解析出参数```ValueItem```及其属性的功能:
```cpp
//将XMLNode解析为Item
//static bool resolveNodeToParam(DataBuilder::ValueItem& item, const XMLResolve::stNodeInfo& node);
//示例
//从XML解析出来的node
//node
DataBuilder::ValueItem item;
ParamItemReader::resolveNodeToParam(item, node);
if(!item){
//参数无效
}
```
- 参数节点属性支持(详细参见[type.xlsx](./type.xlsx)中的<通用属性>页)
- 支持节点属性的覆盖
- 参数生成控件支持(详细参见[type.xlsx](./type.xlsx)中的<特殊控件类型说明>页)
- 参数数据类型支持(详细参见[type.xlsx](./type.xlsx)中的<类型特殊属性说明>页)
- 枚举类型支持(提供了默认的读取方式,可以通过继承```IEnumDataLoader```来重写枚举文件的读取方式)
- 参数组的支持(暂未支持,待完善)
- 参数序列化/反序列化支持(```DataSerialization```类支持,暂时未支持数据类型为```String```类型的参数(因为可变长))
- 动态控件创建,由```CtrlCreator```类支持
```cpp
DataBuilder::ValueItem item = xxxx;
ICtrlBase* ctrl = CtrlCreator::createWidgetWithParam(item);
if(ctrl && ctrl->widget()){
//操作窗体
}
```
- XML参数节点解析说明
- 所有类型字符串不区分大小写,例如: type="CHAR"、type="char"、type="ChAr"是等效的
- 对于Bool类型的值,“TRUE”、“YES”、“1”都识别为true
- 数据类型解析表
字符|类型
----|----
B、BYTE | DataBuilder::DataType::Byte
STRING、STR | DataBuilder::DataType::String
D、DOUBLE | DataBuilder::DataType::Double
F、FLOAT | DataBuilder::DataType::Float
I8、INT8 | DataBuilder::DataType::Int8
I16、INT16| DataBuilder::DataType::Int16
I32、INT32| DataBuilder::DataType::Int32
I64、INT64| DataBuilder::DataType::Int64
UI8、UINT8| DataBuilder::DataType::UInt8
UI16、UINT16| DataBuilder::DataType::UInt16
UI32、UINT32| DataBuilder::DataType::UInt32
UI64、UINT64| DataBuilder::DataType::UInt64
BOOL| DataBuilder::DataType::Bool
- 控件类型解析表
字符|类型
----|----
DIR | DataBuilder::CtrlType::DirSelect
OPENFILE | DataBuilder::CtrlType::OpenFileSelect
SAVEFILE | DataBuilder::CtrlType::SaveFileSelect
IP | DataBuilder::CtrlType::IPAddr
DATETIME | DataBuilder::CtrlType::DateTime
DATE| DataBuilder::CtrlType::Date
TIME| DataBuilder::CtrlType::Time
CHECK| DataBuilder::CtrlType::CheckBox
RADIO| DataBuilder::CtrlType::RadioBox
COMBO| DataBuilder::CtrlType::ComboBox
# 计划支持的特性
- 控件间联动规则定义及开发
# 软件架构
C++/QT/XML
# 支持平台
- 全平台
# 性能指标
无
# 第三方库依赖
- XMLWithXPath
# 支持者
Name:代小兵
Email:daixb@sinux.com.cn
Tel:13982071922
You...