zoukankan      html  css  js  c++  java
  • asp.net生成静态页

    做个生成静态页示例:

    采用替换模版页的形式生成静态页

     

    第一步:新建项目,创建一个简单模版页: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]$" 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
    示例源码下载二:https://files.cnblogs.com/zhongweiv/CreateHtml.rar



    作   者:   Porschev[钟慰]
    出   处:   http://www.cnblogs.com/zhongweiv/
    微   博:     http://weibo.com/porschev
    欢迎任何形式的转载,但请务必注明原文详细链接

  • 相关阅读:
    LeetCode Missing Number (简单题)
    LeetCode Valid Anagram (简单题)
    LeetCode Single Number III (xor)
    LeetCode Best Time to Buy and Sell Stock II (简单题)
    LeetCode Move Zeroes (简单题)
    LeetCode Add Digits (规律题)
    DependencyProperty深入浅出
    SQL Server存储机制二
    WPF自定义RoutedEvent事件示例代码
    ViewModel命令ICommand对象定义
  • 原文地址:https://www.cnblogs.com/zhongweiv/p/CreateHTML.html
Copyright © 2011-2022 走看看