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>
  • 相关阅读:
    python字符串的第一个字符和最后字符
    python str和repr的区别
    python list tuple知识点
    python list append 相关知识点
    python dict remove,删除
    python windows和linux下安装和配置
    python 集合的相关操作
    python list 合并连接字符串
    python中文视频教程
    小程序授权登录
  • 原文地址:https://www.cnblogs.com/Darker-Samuel/p/4086940.html
Copyright © 2011-2022 走看看