代码生成器

代码自动生成,代码生成器。

方法一 拼字符串

拼字符串,任何开发工具任何语言都可以,死板,编译代码,拼字符串很麻烦,格式变动就要在原来的拼接字符串上改动,容易出错。

不过使用起来方便。

 

方法二用微软的VS工具 XML和XSLT。

方法

VS2013,打开自己写的xsl文件,选择菜单XML下的 《开始XLST而不调试》,选择对应的自己写的XML元数据文件,就生成了。

需要自己编译XML文件和XLS文件。

<?xml version="1.0" encoding="GB2312" standalone="yes"?>
<?xml-stylesheet href="endE.xsl" type="text/xsl"?>
<DATA>
  <FunctionName>TestFun</FunctionName>
  <ParaCount>3</ParaCount>
  <ROWPara>
    <ROW0>ID</ROW0>
    <ROW1>Name</ROW1>
    <ROW2>IDNo</ROW2>
    <ROW2>CardNo</ROW2>
  </ROWPara>
  <ROWName>
    <ROW0>ID</ROW0>
    <ROW1>Name</ROW1>
    <ROW2>Sex</ROW2>
    <ROW2>age</ROW2>
    <ROW2>Nation</ROW2>
    <ROW2>Account</ROW2>
    <ROW2>City</ROW2>
  </ROWName>
</DATA>
TestFun.xml
<?xml version="1.0" encoding="gb2312" ?>
<xsl:stylesheet  version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
 
<xsl:template match="/">

              <html>

                     <body>
                     <!--第一部分的生成dataset-->
<pre>
  -----------------------OLE Function Log---------------------------
  {
  lg->info("<xsl:value-of select="DATA/FunctionName"/>");
  vapp.OleFunction("<xsl:value-of select="DATA/FunctionName"/>",<xsl:for-each select="DATA/ROWPara/*"><xsl:value-of select="current()"/>, </xsl:for-each>);
  <xsl:for-each select="DATA/ROWName/*" >
  lg->infoRow(<xsl:value-of select="current()"/>);</xsl:for-each>
}  
        </pre>
          
           </body>   </html>

       </xsl:template>

      
</xsl:stylesheet>
CallFunctionPara.xsl


生成的Code

  -----------------------OLE Function Log---------------------------
  {
  lg->info("TestFun");
  vapp.OleFunction("TestFun",ID, Name, IDNo, CardNo, );
  
  lg->infoRow(ID);
  lg->infoRow(Name);
  lg->infoRow(Sex);
  lg->infoRow(age);
  lg->infoRow(Nation);
  lg->infoRow(Account);
  lg->infoRow(City);
}  
        
SourceCode
字段列表 
<xsl:for-each select="DATA/FieldName/*"><xsl:value-of select="current()"/>,</xsl:for-each>
参数列表
<xsl:for-each select="DATA/FieldName/*">:<xsl:value-of select="current()"/>,</xsl:for-each>
ParamByName赋值
<xsl:for-each select="DATA/FieldName/*">query->ParamByName("<xsl:value-of select="current()"/>")->Value = table->FieldByName("<xsl:value-of select="current()"/>")->Value;
            </xsl:for-each>

 自己编写独立解析XSL和XML的EXE

 private void button1_Click(object sender, EventArgs e)
        {
            String outFile;
            outFile = "E:\\TableClass.txt";
            System.Xml.XmlDocument xdoc = new System.Xml.XmlDocument();
            System.Xml.Xsl.XslTransform xslt = new System.Xml.Xsl.XslTransform();
            xslt.Load("E:\\TableClass.xsl");
            xslt.Transform("E:\\TableClass.xml", outFile);

            String CodeText;
            CodeText= System.IO.File.ReadAllText(outFile);
            CodeText=CodeText.Replace("&gt;", ">");
            
            System.IO.File.WriteAllText(outFile, CodeText);
}
View Code

 

判断是否为自增列,xsl生成的最终代码换行有问题,其他已经实现。

      <xsl:choose>        <xsl:when test="@Identity='1'">
          __property  <xsl:value-of select="@Type"/>                     <xsl:value-of select="current()"/>={read=F<xsl:value-of select="current()"/>};        </xsl:when>      <xsl:otherwise>
        __property <xsl:value-of select="@Type"></xsl:value-of>           <xsl:value-of select="current()"/> ={read=F<xsl:value-of select="current()"/>,write=F<xsl:value-of select="current()"/>};            </xsl:otherwise>      
      </xsl:choose>  
choose

 

转载于:https://www.cnblogs.com/cb168/p/4285656.html

经历了数月艰苦的开放和程序员最痛苦的测试,今天,世上最强,最完善,最稳定和测试最充分,文档最完整的旗舰版和平之翼Java通用代码生成器SMEU 3.2.0 正版乌篷船盛装发布了。欢迎大家下载使用。 请至本项目码云主站下载二进制war包发行版和源码: https://gitee.com/jerryshensjf/PeaceWingSMEU 和平之翼Java代码生成器SMEU 3.2.0版,研发代号(乌篷船 Black Awning Boat)已发布,本软件是旗舰版的动词算子代码生成器。在附件中提供war包下载。此版本支持使用Excel模板的代码生成,支持初始数据导入,支持SGS语言语法加亮。欢迎使用。 乌篷船支持华丽的Excel模板代码生成和初始数据导入,软件新增Excel生成界面和示例Excel模板。界面和Excel模板如下图。 此分支为无垠/和平之翼代码生成器阵列三大旗舰分支之一,其他两支为无垠代码生成器JEEEU版和和平之翼代码生成器SHCEU版。 目前和平之翼代码生成器SMEU 3.2.0版乌篷船正版已发布, 此版本支持Service,Dao组件扫描,SGS初始数据导入,多对多初始数据导入,一对多动态标签等先进特性,新增在线文档:代码生成器技术乱弹,欢迎使用。现在此版本war包已上传至本站附件栏,并经过详细测试,有重大Bug修复与功能更新,涉及一系列遗漏的Bug修复,包括Excel模板生成的一些缺陷,和Boolean类型的一系列缺陷,已发现的Bug均已修复,欢迎下载使用。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值