.net 生成网站地图 sitemap.xml

来源:互联网 时间:2015-09-10

1.此处为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("" +

"" +

"" +

"" +

"Corets, Eva" +

"5.95" +

"" +

"");

xmldoc.Save(Server.MapPath("bookstore2.xml")); //保存

}

如果如下:

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 = "";

private const string XmlnsXsi = "";

private const string XsiSchemaLocation = " ";

///

/// 生成SiteMap地图

///

///需要生成的 对象列表

///设置文件保存名称

///更新周期

///xml文件保存路径

///

public static bool CreateSiteMapXml(ListsiteMaps, 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;

}

}

}

///

///

///

///

///0.5

///2014-08-19

///weekly

///

///

///

public class SiteMap

{

///

/// 链接地址

/// 如:

///

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; }

}

}

生成的结果为:

1.00

2014-08-19

weekly

希望可以帮助到你!

SEO专题推荐:

关键词优化专题:网站关键词优化没效果?来这里学习最实用的关键词优化技巧!

内链优化专题:最能提升网站权重的内链部署优化技巧与方法

外链建设专题:高质量自然外链怎么做?读完这些你将质的飞跃

网站降权专题:2015年最有用的网站降权、被K、被黑、被攻击的解决方法

用户体验专题:学习完这些,作为站长的你可以秒懂如何做网站用户体验

行业网站专题:优化行业网站的“葵花宝典”看完后无优化压力

项目推荐

A5创业网 版权所有

返回顶部