第三步:代码生成引擎
自动代码生成方案很多,这里为了配置模板方便,就使用了最常见的XML+XSLT模板方式。
核心代码如下:
public static bool TransferXml(XmlDocument xmlDoc, string XslPath, string TargetFileName) { XslCompiledTransform xslTran = new XslCompiledTransform(); XmlTextWriter xw = null; try { xw = new XmlTextWriter(TargetFileName, Encoding.UTF8); xslTran.Load(XslPath); xslTran.Transform(xmlDoc, xw); return true; } catch { return false; } finally { if (xw != null) { xw.Flush(); xw.Close(); } } } public static string TransferXmlToString(XmlDocument XmlDoc, string XsltPath) { //获取Model类模板 string ResultStr = ""; MemoryStream ms = null; StreamReader sr = null; try { XslCompiledTransform XTran = new XslCompiledTransform(); XTran.Load(XsltPath); ms = new System.IO.MemoryStream(); XPathNavigator nav = XmlDoc.CreateNavigator(); XTran.Transform(nav, null, ms); ms.Position = 0; sr = new StreamReader(ms); ResultStr = sr.ReadToEnd(); ResultStr = ResultStr.Replace("<?xml version=/"1.0/" encoding=/"utf-8/"?>", ""); return ResultStr; } catch { return ""; } finally { if (sr != null) { sr.Close(); sr.Dispose(); } if (ms != null) { ms.Dispose(); } } }
好了,现在为止,代码生成工具就基本完成了。