asp.net 生成网站地图 sitemap.xml

此处为Demo,借鉴别人的生成 xml

 

//创建xml文件方法一 
    protected void btn1_OnClick(object sender, EventArgs e) 
    { 
         XmlText xmltext; 
         XmlDocument xmldoc = new XmlDocument(); 
 
        //加入XML的声明段落 
         XmlNode xmlnode = xmldoc.CreateXmlDeclaration("1.0", "gb2312", null); 
         xmldoc.AppendChild(xmlnode); 
 
        //加入一个根元素 
         XmlElement xmlelem = xmldoc.CreateElement("", "bookstore", ""); 
         xmltext = xmldoc.CreateTextNode(""); 
         xmlelem.AppendChild(xmltext); 
         xmldoc.AppendChild(xmlelem); 
 
        //加入一个子元素 
         XmlElement xmlelem1 = xmldoc.CreateElement("", "book", ""); 
         xmltext = xmldoc.CreateTextNode(""); 
         xmlelem1.AppendChild(xmltext); 
        //为子元素"book"增加两个属性 
         xmlelem1.SetAttribute("genre", "", "fantasy"); 
         xmlelem1.SetAttribute("ISBN", "2-3631-4"); 
 
         xmldoc.ChildNodes.Item(1).AppendChild(xmlelem1); 
 
        //创建三个子元素的子元素 
         XmlElement xmlelem2 = xmldoc.CreateElement("", "title", ""); 
         xmltext = xmldoc.CreateTextNode("Oberon's Legacy"); 
        xmlelem2.AppendChild(xmltext); 
         xmldoc.ChildNodes.Item(1).AppendChild(xmlelem1).AppendChild(xmlelem2); 
 
         XmlElement xmlelem3 = xmldoc.CreateElement("", "author", ""); 
         xmltext = xmldoc.CreateTextNode("Corets, Eva"); 
         xmlelem3.AppendChild(xmltext); 
         xmldoc.ChildNodes.Item(1).AppendChild(xmlelem1).AppendChild(xmlelem3); 
 
         XmlElement xmlelem4 = xmldoc.CreateElement("", "price", ""); 
         xmltext = xmldoc.CreateTextNode("5.95"); 
         xmlelem4.AppendChild(xmltext); 
         xmldoc.ChildNodes.Item(1).AppendChild(xmlelem1).AppendChild(xmlelem4); 
         xmldoc.Save(Server.MapPath("bookstore.xml")); //保存 
     } 
 
    //创建xml文件方法二 
    protected void btn2_OnClick(object sender, EventArgs e) 
    { 
         XmlDocument xmldoc = new XmlDocument(); //创建空的XML文档 
         xmldoc.LoadXml("" + 
         "" + 
         "" + 
         "Oberon's Legacy" + 
         "Corets, Eva" + 
         "5.95" + 
         "" + 
         ""); 
         xmldoc.Save(Server.MapPath("bookstore2.xml")); //保存 
     } 

效果如下:

  
 
   
  Oberon's Legacy  
  Corets, Eva  
  5.95  
   

不是我想要的网站地图xml文件。

 

2.以下是我自己根据实际情况写的

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";
 
        /// 
        /// 生成SiteMap地图
        /// 
        /// 需要生成的 对象列表
        /// 设置文件保存名称
        /// 更新周期
        /// xml文件保存路径
        /// 
        public static bool CreateSiteMapXml(List 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的声明段落,
            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");//查找 
                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");//创建一个节点 
 
                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);//添加到节点中 
            }
            try
            {
                //然后在保存到源位置
                xmldoc.AppendChild(xmlelem);
                xmldoc.Save(path);
                return true;
            }
            catch (Exception)
            {
                return false;
            }
        }
 
        
    }
 
 
    /// 
    /// 
    /// 
    /// http://news.chinahbnet.com/2014/8/19/15352.html
    /// 0.5
    /// 2014-08-19
    /// weekly
    /// 
    /// 
    /// 
    public class SiteMap
    {
        /// 
        /// 链接地址
        /// 如:http://news.chinahbnet.com
        /// 
        public string Loc { get; set; }
        /// 
        /// 网页权重
        /// 0.1 - 1
        /// 
        public string Priority { get; set; }
        /// 
        /// 生成日期
        /// 2014-08-19
        /// 
        public string Lastmod { get; set; }
        /// 
        /// 更新周期
        /// always  经常
        /// hourly  每小时
        /// daily   每天
        /// weekly  每周
        /// monthly 每月
        /// yearly  每年
        /// never   从不
        /// 
        public string Changefreq { get; set; }
 
       
    }
}

生成的结果为:



  
    http://www.baidu.com
    1.00
    2014-08-19
    weekly
  

 

转载:

https://blog.csdn.net/ybb350680013/article/details/38683077#commentBox

 

XmlDocument 文档

https://msdn.microsoft.com/zh-cn/library/system.xml.xmldocument(v=vs.110).aspx

 

 

 

你可能感兴趣的:(.net,asp)