ASP.NET生成Google网站地图的代码

复制代码 代码如下:

  /// <summary>

  /// 生成google网站地图

  /// </summary>

  /// <returns></returns>

  public static boolBuildGoogleSitemap()

  {

  try

  {

  string RootDirectory = AppDomain.CurrentDomain.BaseDirectory;

  XmlTextWriter Writer = new XmlTextWriter(HttpContext.Current.Server.MapPath("~/GoogleSitemaps.xml"), Encoding.GetEncoding("utf-8"));

  Writer.Formatting = Formatting.Indented;

  Writer.WriteStartDocument();

  Writer.WriteStartElement("urlset", "http://www.google.com/schemas/sitemap/0.84");

  //遍历扫描网站所有文件

  showfiles(RootDirectory, Writer);

  Writer.WriteEndElement();

  Writer.WriteEndDocument();

  Writer.Close();

  return true;

  }

  catch (Exception err)

  {

  return false;

  }

  }

  //遍历扫描网站所有文件

  static void showfiles(string dirpath, XmlTextWriter Writer)

  {

  bool IsRead = true;

  string[] NotRead ={ "App_Data", "Bin", "fckeditor", "js", "MyAdmin", "PowerChatRoom" };//排除这些文件夹

  foreach (string s in NotRead)

  {

  string dirname = dirpath.Substring(dirpath.LastIndexOf(@"\") + 1);

  if (dirname == s)

  {

  IsRead = false;

  break;

  }

  }

  if (!IsRead)

  return;

  try

  {

  DirectoryInfo dir = new DirectoryInfo(dirpath);

  foreach (FileInfo f in dir.GetFiles())

  {

  string path = dir.FullName.Replace(AppDomain.CurrentDomain.BaseDirectory, "");//文件相对目录

  //HttpContext.Current.Response.Write(AppDomain.CurrentDomain.BaseDirectory + "**********" + dir.FullName + "<br>");

  Writer.WriteStartElement("url");

  Writer.WriteStartElement("loc");

  StringBuilder sb = new StringBuilder("/" + path + "/" + f.Name);

  sb.Replace("//", "/").Replace(@"\", "/");

  Writer.WriteString(ConfigurationManager.AppSettings["WebSiteUrl"].ToString() + sb.ToString());

  Writer.WriteEndElement();

  Writer.WriteStartElement("lastmod");

  Writer.WriteString(string.Format("{0:yyyy-MM-dd}", f.LastWriteTime));

  Writer.WriteEndElement();

  Writer.WriteStartElement("changefreq");

  Writer.WriteString("always");//更新频率:always:经常,hourly:小时,daily:天,weekly:周,monthly:月,yearly:年

  Writer.WriteEndElement();

  Writer.WriteStartElement("priority");

  Writer.WriteString("0.8");//相对于其他页面的优先权,此值定于0.0 - 1.0之间

  Writer.WriteEndElement();

  Writer.WriteEndElement();

  }

  foreach (DirectoryInfo d in dir.GetDirectories())

  {

  showfiles(d.FullName, Writer);

  }

  }

  catch (Exception) { }

  }