zoukankan      html  css  js  c++  java
  • 生成 网站“面包屑” XML

    using System;
    using System.Collections.Generic;
    using System.IO;
    using System.Threading;
    using System.Xml;
    
    namespace Helper
    {
      public class SitemapXml
      {
        private const string Xmlns = "http://www.sitemaps.org/schemas/sitemap/0.9";
        private const string XmlnsXsi = "http://www.w3.org/2001/XMLSchema-instance";
        private const string XsiSchemaLocation = "http://www.sitemaps.org/schemas/sitemap/0.9  http://www.sitemaps.org/schemas/sitemap/0.9/sitemap.xsd";
    
        /// <summary>
        /// 生成SiteMap地图
        /// </summary>
        /// <param name="siteMaps">需要生成的 对象列表</param>
        /// <param name="saveFileName">设置文件保存名称</param>
        /// <param name="changefreq">更新周期</param>
        /// <param name="savePath">xml文件保存路径</param>
        /// <returns></returns>
        public static bool CreateSiteMapXml(List<SiteMap> siteMaps, string savePath = "/", string saveFileName = "sitemap", string changefreq = "weekly")
        {
          //保存创建好的XML文档
          string filename = saveFileName + ".xml";
          string path = System.Web.HttpContext.Current.Server.MapPath(savePath) + filename;
    
          //先创建XML,返回路径
          var xmldoc = new XmlDocument();
          //加入XML的声明段落,<?xml version="1.0" encoding="gb2312"?>
          XmlDeclaration xmldecl = xmldoc.CreateXmlDeclaration("1.0", "UTF-8", null);
          xmldoc.AppendChild(xmldecl);
    
          //加入一个根元素
          XmlNode xmlelem = xmldoc.CreateElement("", "urlset", "");
          //添加属性
          XmlAttribute attr = xmldoc.CreateAttribute("xmlns");
          attr.Value = Xmlns;
          if (xmlelem.Attributes != null) xmlelem.Attributes.SetNamedItem(attr);
    
          attr = xmldoc.CreateAttribute("xmlns:xsi");
          attr.Value = XmlnsXsi;
          if (xmlelem.Attributes != null) xmlelem.Attributes.SetNamedItem(attr);
    
          attr = xmldoc.CreateAttribute("xsi:schemaLocation");
          attr.Value = XsiSchemaLocation;
          if (xmlelem.Attributes != null) xmlelem.Attributes.SetNamedItem(attr);
    
          xmldoc.AppendChild(xmlelem);
          string lastmod = DateTime.Now.ToString("yyyy-MM-dd");
          for (int i = 0; i < siteMaps.Count; i++)
          {
            XmlNode root = xmldoc.SelectSingleNode("urlset");//查找<urlset> 
            if (root == null)
            {
              //加入一个根元素
              xmlelem = xmldoc.CreateElement("", "urlset", "");
              //添加属性
              attr = xmldoc.CreateAttribute("xmlns");
              attr.Value = Xmlns;
              if (xmlelem.Attributes != null) xmlelem.Attributes.SetNamedItem(attr);
    
              attr = xmldoc.CreateAttribute("xmlns:xsi");
              attr.Value = XmlnsXsi;
              if (xmlelem.Attributes != null) xmlelem.Attributes.SetNamedItem(attr);
    
              attr = xmldoc.CreateAttribute("xsi:schemaLocation");
              attr.Value = XsiSchemaLocation;
              if (xmlelem.Attributes != null) xmlelem.Attributes.SetNamedItem(attr);
    
              xmldoc.AppendChild(xmlelem);
              i = 0;
              continue;
            }
            XmlElement xe1 = xmldoc.CreateElement("url");//创建一个<url>节点 
    
            XmlElement xmlelem1 = xmldoc.CreateElement("", "loc", "");
            XmlText xmltext = xmldoc.CreateTextNode(siteMaps[i].Loc);
            xmlelem1.AppendChild(xmltext);
            xe1.AppendChild(xmlelem1);
    
            xmlelem1 = xmldoc.CreateElement("", "priority", "");
            xmltext = xmldoc.CreateTextNode(siteMaps[i].Priority);
            xmlelem1.AppendChild(xmltext);
            xe1.AppendChild(xmlelem1);
    
            xmlelem1 = xmldoc.CreateElement("", "lastmod", "");
            xmltext = xmldoc.CreateTextNode(lastmod);
            xmlelem1.AppendChild(xmltext);
            xe1.AppendChild(xmlelem1);
    
            xmlelem1 = xmldoc.CreateElement("", "changefreq", "");
            xmltext = xmldoc.CreateTextNode(changefreq);
            xmlelem1.AppendChild(xmltext);
            xe1.AppendChild(xmlelem1);
    
            root.AppendChild(xe1);//添加到<urlset>节点中 
          }
          try
          {
            //然后在保存到源位置
            xmldoc.AppendChild(xmlelem);
            xmldoc.Save(path);
            return true;
          }
          catch (Exception)
          {
            return false;
          }
        }
      }
    
    
      /// <summary>
      /// 
      /// <url>
      /// <loc>http://news.chinahbnet.com/2014/8/19/15352.html</loc>
      /// <priority>0.5</priority>
      /// <lastmod>2014-08-19</lastmod>
      /// <changefreq>weekly</changefreq>
      /// </url>
      /// 
      /// </summary>
      public class SiteMap
      {
        /// <summary>
        /// 链接地址
        /// 如:http://news.chinahbnet.com
        /// </summary>
        public string Loc { get; set; }
        /// <summary>
        /// 网页权重
        /// 0.1 - 1
        /// </summary>
        public string Priority { get; set; }
        /// <summary>
        /// 生成日期
        /// 2014-08-19
        /// </summary>
        public string Lastmod { get; set; }
        /// <summary>
        /// 更新周期
        /// always  经常
        /// hourly  每小时
        /// daily   每天
        /// weekly  每周
        /// monthly 每月
        /// yearly  每年
        /// never   从不
        /// </summary>
        public string Changefreq { get; set; }
      }
    }
    
    
    
    
    
    生成的结果为:
    
    <?xml version="1.0" encoding="UTF-8"?>
    <urlset xmlns="http://www.sitemaps.org/schemas/sitemap/0.9" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
    
    schemaLocation="http://www.sitemaps.org/schemas/sitemap/0.9  http://www.sitemaps.org/schemas/sitemap/0.9/sitemap.xsd">
      <url>
        <loc>http://www.baidu.com</loc>
        <priority>1.00</priority>
        <lastmod>2014-08-19</lastmod>
        <changefreq>weekly</changefreq>
      </url>
    </urlset>
  • 相关阅读:
    tuple 元组及字典dict
    day 49 css属性补充浮动 属性定位 抽屉作业
    day48 选择器(基本、层级 、属性) css属性
    day47 列表 表单 css初识
    day 46 http和html
    day 45索引
    day 44 练习题讲解 多表查询
    day 40 多表查询 子查询
    day39 表之间的关联关系、 补充 表操作总结 where 、group by、
    day38 数据类型 约束条件
  • 原文地址:https://www.cnblogs.com/Darker-Samuel/p/4086940.html
Copyright © 2011-2022 走看看