生成 网站“面包屑” 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>
时间: 2024-11-10 06:19:02

生成 网站“面包屑” XML的相关文章

.net 生成网站地图 sitemap.xml

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); xm

SEO之面包屑导航

面包屑导航作为网站优化中经典的一个优化方案,尤其一定的作用,如电子铭牌网站的建设,采用面包屑导航,主要作用是: 1.为了让用户在浏览网站时能够明确的浏览页面位置,同时可以方便用户返回上一级菜单,符合用户体验; 2.从网站优化的角度来说,符合用户体验的设计思路本身就有利于网站优化,同时有利于提升某些关键词的排名. 面包屑导航(BreadcrumbNavigation)这个概念来自童话故事Hansel和Gretel,当Hansel和Gretel穿过森林时,不小心迷路了,但是他们发现在沿途走过的地方都

MVC 5 + EF6 入门完整教程14 -- 动态生成面包屑导航

上篇文章我们完成了 动态生成多级菜单 这个实用组件. 本篇文章我们要开发另一个实用组件:面包屑导航. 面包屑导航(BreadcrumbNavigation)这个概念来自童话故事"汉赛尔和格莱特",当汉赛尔和格莱特穿过森林时,不小心迷路了,但是他们发现在沿途走过的地方都撒下了面包屑,让这些面包屑来帮助他们找到回家的路.所以,面包屑导航的作用是告诉访问者他们目前在网站中的位置以及如何返回.(摘自百度百科) 要实现面包屑导航,也可以直接从nuget搜一些sitemap组件直接使用. 当然,和

辛星和您一起用纯CSS美化面包屑导航

首先讲一下面包屑导航为什么叫做面包屑导航,它来自于一个童话故事,这个童话故事的名字也非常有特色,叫做"汉塞尔和格莱特",有一天他们去森林里游玩,但是走着走着发现迷路了,大家都知道,森林里都都是数,不管往哪边走,还是茫茫的一片树,于是他们在沿途走过的地方都撒下面包屑,他们利用这些面包屑帮助他们走出了森林,因此,面包屑导航的意思就是说我们去过哪些地方,以及我们如何回到我们之前的位置. 有时候我们特别需要面包屑导航,比如我们在某论坛或者某网上商城闲逛的时候,很容易被茫茫的帖子和众多的商品搞的

米扑科技的开源项目:sitemap-php 自动生成网站地图

米扑科技旗下的产品,近期正在做SEO网站优化,其中子需求之一是调研实现了网站地图(sitemap.xml) 封装简化了许多功能模块,现在分享出来,源代码可在Github上下载,有简单的示例. Github 开源网址: sitemap-php What is sitemap-php ? sitemap-php 是一个轻量级.简单快速生成网站地图的开源项目,由北京米扑科技有限公司(mimvp.com)开发分享. 通过简单的配置定义,一个函数createSitemap(),可自动生成sitemap.x

WordPress主题开发:制作面包屑导航

所谓面包屑,就是类似这种:首页 > 公司简介 > 发展历史 展示网站树型结构,并让网站访问者随时知道自己所处的位置,方便返回上几级. 将下面的代码添加到主题的 functions.php : //面包屑功能 function the_breadcrumb() { echo '<ul class="breadcrumb">'; if (!is_home()) { echo '<li><a href="'; echo get_option

yii2.0 面包屑的使用

yii2中面包屑是yii2自带的小部件,类似本网站的导航栏应该就是采用面包屑来完成的 例子如下,需要引入 yii\widgets\Breadcrumbs echo Breadcrumbs::widget([    'homeLink' => ['label' => '首页', 'url' => ['site/index']],    'itemTemplate' => " {link} \n", //全局模板  运用到每个link    'links' =>

修改dedecms面包屑导航的首页链接关键字

dedecms面包屑导航默认是"主页>分类>二级分类>",我们知道链接的锚文字对排名有一定影响,这时可以考虑将“主页”改成具体的关键字,那么如何修改dedecms面包屑导航的首页链接关键字呢?你可能也想知道帝国cms面包屑导航的首页链接锚文本改成关键字 方法1.登陆网站后台,系统>系统基本参数>站点设置,将主页链接名改成具体的关键词 保存,重新生成文档html 方法2.直接从代码里面写固定.打开include/typelink.class.php文件,大概

带箭头的面包屑导航栏

制作漂亮美观的面包屑导航栏 在开始之前,我要照例给大家科普一下啥叫面包屑导航栏 类似于下面这几种的 主页>栏目页>文章页面 主页/栏目页/文章页面 可以告诉访问者他们目前在网站中的位置以及如何返回的DOM叫面包屑导航栏 但是...... 你不觉得这个不好看吗? 如果哪一天,你们公司的UI给你一张图,图里的面包屑导航栏是这样的 这样的 又或者是其他带图案的面包屑导航栏,这时候应该怎么做? 可能有朋友说这个简单,so easy,直接找个图案给导航栏加background就行了 可是,真的有这么简单