zoukankan      html  css  js  c++  java
  • 模板维护-子模板解析

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

    第一步:

    定义一个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中,如图所示(模板名称是粒度):




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

  • 相关阅读:
    搞笑的菜名
    sad news
    转载:比尔盖茨给adobe CEO的五点意见(歪版)/ 很搞笑 ;)
    [ZZ]TDSCDMA试商用网已经建成 开始向用户放号
    关于Java IDE
    候捷要来南京了吗?
    读书笔记:《Java2 教程》(二)
    [ZZ]当今世界十大定律
    久违了,博客园
    解决小型局域网中xp系统的机器不能共享资源的问题
  • 原文地址:https://www.cnblogs.com/xzpblog/p/5117916.html
Copyright © 2011-2022 走看看