做个生成静态页示例:
采用替换模版页的形式生成静态页————原文出处http://blog.csdn.net/porschev/article/details/6431646
第一步:新建项目,创建一个简单模版页:TemplatePage.htm
- <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
- <html xmlns="http://www.w3.org/1999/xhtml">
- <head>
- <title>Porschev 生成静态页简单示例</title>
- </head>
- <body>
- <h1>$Porschev[0]$</h1>
- <ul>
- <li>页标题:$Porschev[0]$</li>
- <li>名称:$Porschev[1]$</li>
- <li>网址:<a href="$Porschev[2]$" mce_href="$Porschev[2]$" target="_blank">$Porschev[2]$</a></li>
- <li>时间:$Porschev[3]$</li>
- <li>详述:$Porschev[4]$</li>
- </ul>
- </body>
- </html>
第二步:创建一个config文件:CreateHtml.config
- <?xml version="1.0" encoding="utf-8" ?>
- <web>
- <website key="0" value="title"/>
- <website key="1" value="name"/>
- <website key="2" value="url"/>
- <website key="3" value="createDate"/>
- <website key="4" value="desc"/>
- </web>
第三步:编写生成静态页代码:(添加System.Web引用)
- using System;
- using System.Collections.Generic;
- using System.Linq;
- using System.Text;
- using System.IO;
- using System.Xml;
- namespace CreateHtmlBLL
- {
- public class CreateHtmlBLL
- {
- #region##读取配置文件某节点的个数
- /// <summary>
- /// 读取配置文件某节点的个数
- /// </summary>
- /// <param name="path">配置文件的路径</param>
- /// <param name="nodeName">要获取的节点</param>
- /// <returns>返回节点个数</returns>
- private int ReadConfig(string path,string nodeName)
- {
- string absoPath = string.Empty; //绝对路径
- try
- {
- absoPath = System.Web.HttpContext.Current.Server.MapPath(path);
- XmlDocument xd = new XmlDocument();
- xd.Load(absoPath);
- XmlNodeList nodeList = xd.SelectNodes(nodeName); //得到相应节点的集合
- return nodeList.Count;
- }
- catch (Exception)
- {
- throw;
- }
- }
- #endregion
- #region##创建文件夹
- /// <summary>
- /// 创建文件夹
- /// </summary>
- /// <param name="path">要创建的路径</param>
- public void CreatFolder(string path)
- {
- string absoPath = string.Empty; //绝对路径
- try
- {
- absoPath = System.Web.HttpContext.Current.Server.MapPath(path);
- if (!Directory.Exists(absoPath))
- {
- Directory.CreateDirectory(absoPath);
- }
- }
- catch (Exception)
- {
- throw;
- }
- }
- #endregion
- #region##生成HTML页
- /// <summary>
- /// 生成HTML页
- /// </summary>
- /// <param name="configPath">配置文件的路径</param>
- /// <param name="configNodeName">配置文件节点名</param>
- /// <param name="temPath">模版页路径</param>
- /// <param name="arr">替换数组</param>
- /// <param name="createPath">生成HTML路径</param>
- public void CreateHtml(string configPath, String configNodeName, string temPath, string[] arr,string createPath)
- {
- string fileName = string.Empty; //生成文件名
- string absoCrePath = string.Empty; //生成页绝对路径
- string absoTemPath = string.Empty; //模版页的绝对中径
- int nodeCount = 0; //节点数
- try
- {
- absoCrePath = System.Web.HttpContext.Current.Server.MapPath(createPath);
- absoTemPath = System.Web.HttpContext.Current.Server.MapPath(temPath);
- nodeCount = ReadConfig(configPath, configNodeName);
- FileStream fs = File.Open(absoTemPath, FileMode.Open, FileAccess.Read); //读取模版页
- StreamReader sr = new StreamReader(fs, Encoding.GetEncoding("utf-8"));
- StringBuilder sb = new StringBuilder(sr.ReadToEnd());
- sr.Close();
- sr.Dispose();
- for (int i = 0; i < nodeCount; i++)
- {
- sb.Replace("$Porschev[" + i + "]$", arr[i]);
- }
- CreatFolder(createPath);
- fileName = DateTime.Now.ToFileTime().ToString() + ".html"; //设置文件名(这里可以根据需要变化命名)
- FileStream cfs = File.Create(absoCrePath + "/" + fileName);
- StreamWriter sw = new StreamWriter(cfs, Encoding.GetEncoding("utf-8"));
- sw.Write(sb.ToString());
- sw.Flush();
- sw.Close();
- sw.Dispose();
- }
- catch (Exception)
- {
- throw;
- }
- }
- #endregion
- }
- }
第四步:测式生成
- protected void Page_Load(object sender, EventArgs e)
- {
- CreateHtml();
- }
- #region##生成静态页
- /// <summary>
- /// 生成静态页
- /// </summary>
- public void CreateHtml()
- {
- try
- {
- string[] arr = new string[5];
- arr[0] = "Porschev 静态页测式";
- arr[1] = "dtan";
- arr[2] = "www.dtan.so";
- arr[3] = DateTime.Today.ToString();
- arr[4] = "上班时间上CSDN,都是不好好工作的闲人。。。";
- CreateHtmlBLL.CreateHtmlBLL chb = new CreateHtmlBLL.CreateHtmlBLL();
- chb.CreateHtml("CreateHtml.config", "web/website","Template/TemplatePage.htm", arr,"Porschev");
- }
- catch (Exception ex)
- {
- throw ex;
- }
- }
- #endregion
标例代码下载:http://download.csdn.net/source/3293015