模板维护-子模板解析

    继上篇文章分析了关于主模板的流程,现在来分析一下关于子模板的分析流程:

第一步:

定义一个MainDatatable,然后为它分配四个字段:

Templetcatecode 站位详细2. Templetname 枚举名称 3. PlACE 编码位置4.EXPRESSION编码表达式

第二步:

判断stemplate(模板)sname(名称站位)STRAIN(车型站位)senum(模板说明)

1.sname(名称站位)不为空

把相应的数值加到MainDatatable中




然后创建 物资名称表, 添加两个字段 ID和 NAME

取模板说明中 第一个{}中的数据,进行循环赋值 形式如下图:




然后将 物资名称表 加到MainDatatable中

 

2.STRAIN(车型站位)不为空(原理同上)

把相应的数值加到MainDatatable中




然后创建 车型表,添加两个字段 ID和 NAME


取模板说明中的数据,进行循环赋值 形式如下图:




然后将 车型表 加到MainDatatable中

 

3.stemplate(模板)不为空,

由于子模板的形式比较多,先写出一种形式的解析过程。

解析子模板:

1::[直径(mm),S*100,2,4] [全长(mm),S]×[刃长(mm),S]

第一步:

如果子模板中有 ::这样的符号 就将其去除

[直径(mm),S*100,2,4] [全长(mm),S]×[刃长(mm),S]

第二步:

将其按照 ] 符号转化为数组形式的数据 代码如下:

string[] Arrstemplates = strstemplate.Split(']');

第三步:

实例化stru_tmplcontent,形成数组,在下面的循环解析过程中,为其赋值。

循环解析数组中的数据(大循环 int i = 0; i < Arrstemplates.Length - 1; i++)。

比如第一条数据:[直径(mm),S*100,2,4]

这次是以 ,符号为分隔符 代码如下

string[] arrItem = Arrstemplates[i].Split(',');

第四步:

对上面的数据长度进行判断:

如果大于1 则将数组中[1]的值赋给stru_tmplcontent[0]的strMS属性。

否则 stru_tmplcontent[0]的strMS属性直接赋值”F”

如果大于2 则将数组中[2]的值赋给stru_tmplcontent[0]的strMS属性。

如果等于3 则将数组中[2]的值赋给stru_tmplcontent[0]的strMS属性。

如果大于3 则将数组中[3]的值赋给stru_tmplcontent[0]的strMS属性。

上面依次为strMS赋值结束后 最终结果 stru_tmplcontent[0].strMS =  S*100,2,4

第五步:

在大循环中定义一个小循环(int j = 0; j < arrItem.Length; j++)。

第六步:

循环判断 arrItem[0]  ”[直径(mm),S*100,2,4”  将其拆分 赋值

stru_tmplcontents[0].strStart = “”

stru_tmplcontents[0].smbmc =直径(mm)

stru_tmplcontents[0].smblx = S  (包括S和M)

stru_tmplcontents[0].smboper=*(包括加减乘除运算符)

stru_tmplcontents[0].nmbxs=100

stru_tmplcontents[i].nstart=2

stru_tmplcontents[i].nend = 4

 

综上所述,这是一次嵌套循环,只是解析下面信息

[直径(mm),S*100,2,4] [全长(mm),S]×[刃长(mm),S]中的 [直径(mm),S*100,2,4]

还需要三次循环才能将所有信息全部解析。

解析完毕 会把所有信息依次赋给stru_tmplcontent数组。

 

然后对stru_tmplcontent数组进行循环判断

判断 stru_tmplcontents的属性nstart 和nend 是否为空 代码如下

(stru_tmplcontents[i].nstart + "," + stru_tmplcontents[i].nend != ","


将数组中的信息依次加到MainDatatable中,如下图所示:


对数组属性 smbmc和smblx 进行判断 是否是枚举类型

如果是枚举类型  为其创建模板名称命名的Datatable,然后创建两个字段 ID, NAME

对smbmc属性进行判断,判断属性是否存在英文”(“和中文”(”  然后为名称后面加上 :

在模板说明中去除 ”名称:”,将余下部分进行数组转化,为上面新创建的datatable进行循环赋值。

 

最后把Datatable加到MainDatatable中,如图所示(模板名称是粒度):




后续有关于模板测试的分析流程,敬请期待。

posted @ 2015-08-24 22:12  PCLOVE1123  阅读(185)  评论(0编辑  收藏  举报