如何在 C# 中以编程方式创建 XML 站点地图

2024-01-08

我正在建立一个网站。现在我想创建它的 xml 站点地图,就像 google 站点地图一样。但我想使用 C# 以编程方式创建它。

谁能告诉我如何使用网站的基本 url 访问 Web 服务器上的根目录,将所有页面列表放入字符串列表中?


来得容易

private void GenerateXML()
    {
        try
        {
            string fileName         = "sitemap.xml";

            string DOMAIN           = "http://www.sohel-elite.com";
            string LAST_MODIFY= String.Format("{0:yyyy-MM-dd}", DateTime.Now);
            string CHANGE_FREQ      = "monthly";
            string TOP_PRIORITY     = "0.5";
            string MEDIUM_PRIORITY  = "0.8";

            XNamespace ns    = "http://www.sitemaps.org/schemas/sitemap/0.9";
            XNamespace xsiNs = "http://www.w3.org/2001/XMLSchema-instance";

            //XDocument Start
            XDocument xDoc = new XDocument(
                new XDeclaration("1.0", "UTF-8", "no"),
                new XElement(ns + "urlset",
                new XAttribute(XNamespace.Xmlns + "xsi", xsiNs),
                new XAttribute(xsiNs + "schemaLocation",
                    "http://www.sitemaps.org/schemas/sitemap/0.9 http://www.sitemaps.org/schemas/sitemap/0.9/sitemap.xsd"),
                new XElement(ns + "url",

                    //Root Element
                    new XElement(ns + "loc",        DOMAIN),
                    new XElement(ns + "lastmod",    LAST_MODIFY),
                    new XElement(ns + "changefreq", "weekly"),
                    new XElement(ns + "priority",   TOP_PRIORITY)),

                    //Level0 Menu
                    from level0 in GetParentCMSMenu()
                        select new XElement(ns + "url",
                            new XElement(ns + "loc", String.Concat(DOMAIN, WebsiteHelpers.GetMenuRouteURL(Util.Parse<string>(level0.MENU_ALLIAS), Util.Parse<string>((level0.Level1 == null) ? string.Empty : level0.Level1), Util.Parse<int>(level0.APPLICATION_ID)))),
                            new XElement(ns + "lastmod",    LAST_MODIFY),
                            new XElement(ns + "changefreq", CHANGE_FREQ),
                            new XElement(ns + "priority",   MEDIUM_PRIORITY)
                        ),

                    //Level1 Menu
                    from level0 in GetParentCMSMenu()
                       from level1 in GetLevel1Menu(Util.Parse<int>(level0.MENU_ID))
                            select new XElement(ns + "url",
                                new XElement(ns + "loc", String.Concat(DOMAIN, WebsiteHelpers.GetMenuRouteURL(Util.Parse<string>(level1.Level1), Util.Parse<string>((level1.MENU_ALLIAS == null) ? string.Empty : level1.MENU_ALLIAS), Util.Parse<int>(level1.APPLICATION_ID)))),
                                new XElement(ns + "lastmod",    LAST_MODIFY),
                                new XElement(ns + "changefreq", CHANGE_FREQ),
                                new XElement(ns + "priority",   MEDIUM_PRIORITY)
                            ),

                    //Level2 Menu
                    from level0 in GetParentCMSMenu()
                        from level1 in GetLevel1Menu(Util.Parse<int>(level0.MENU_ID))
                            from level2 in GetLevel2Menu(Util.Parse<int>(level1.MENU_ID))
                                select new
                                    XElement(ns + "url",
                                    new XElement(ns + "loc", String.Concat(DOMAIN, WebsiteHelpers.GetMenuRouteURL(Util.Parse<string>(level2.Menu), Util.Parse<string>(level2.Level1), Util.Parse<int>(level2.AppID), Util.Parse<string>(level2.Level2)))),
                                    new XElement(ns + "lastmod", LAST_MODIFY),
                                    new XElement(ns + "changefreq", CHANGE_FREQ),
                                    new XElement(ns + "priority", MEDIUM_PRIORITY)
                                )

            ));
            //XDocument End

            xDoc.Save(Server.MapPath("~/") + fileName);

            this.MessageHolder.Visible = true;
            this.MessageHolder.Attributes.Add("class", "success");
            this.MessageHolder.InnerHtml = "Sitemap.xml created successfully";

        }
        catch (Exception ex)
        {
            this.MessageHolder.Visible = true;
            this.MessageHolder.Attributes.Add("class", "error");
            this.MessageHolder.InnerHtml = Constants.ERROR_LONG_MESSAGE + "<br/>" + ex.ToString();
        }
    }

是页面的摘录:)Page http://sohelelite.wordpress.com/2013/03/04/create-google-sitemap-xml-using-c/

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何在 C# 中以编程方式创建 XML 站点地图 的相关文章

  • 按扩展名过滤搜索文件返回太多结果

    我正在开发一个 C 控制台应用程序 它必须管理 Windows 操作系统上的文件 我需要获取具有特定扩展名的文件名 列表 我找到了很多解决方案 最建议的是以下一种 HANDLE hFind WIN32 FIND DATA data hFin
  • MVC3中设置下拉列表中的所选项目

    我必须为视图中的下拉列表设置所选项目 但它不起作用 View div class editor label Html LabelFor model gt model Gender div div class editor field Htm
  • ASP.NET 5 中的全局异常处理

    如何将自己的日志记录逻辑附加到 ASP NET 5 应用程序以处理业务逻辑和较低层中引发的每个异常 我尝试用自己的ILoggerProvider实施和loggerfactory AddProvider new LoggerProvider
  • 无法注册时间触发的后台任务

    对于 Windows 8 应用程序 在 C Xaml 中 我尝试注册后台任务 很难说 但我想我的后台任务已正确注册 但是当我单击调试位置工具栏上的后台任务名称时 我的应用程序停止工作 没有任何消息 我查看了事件查看器上的日志 得到 具有入口
  • 如何将 .txt 文件中的数据转换为 xml? C#

    我在一个文本文件中有数千行数据 我想通过将其转换为更容易搜索的内容来轻松搜索 我希望 XML 或其他类型的大型数据结构 尽管我不确定它是否是最好的对于我的想法 每行的数据如下所示 第 31 册 托马斯 乔治 32 34 154 每本书都不是
  • cpp.react库的C++源代码中奇怪的“->* []”表达式

    这是我在文档中找到的 C 片段cpp react 库 https github com schlangster cpp react implicit parallelism auto in D MakeVar 0 auto op1 in g
  • RestSharp获取序列化输出

    我正在寻找一种方法来访问 AddBody 调用的序列化结果 我正在使用内置的 RestSharp 序列化器 例子 class Foo public string FooField void SendRecord var f new Foo
  • 如何在 C# Designer.cs 代码中使用常量字符串?

    如何在 designer cs 文件中引用常量字符串 一个直接的答案是在我的 cs 文件中创建一个私有字符串变量 然后编辑 Designer cs 文件以使用此变量 而不是对字符串进行硬编码 但设计者不喜欢这样抛出错误 我明白为什么这行不通
  • 在 C# 中检查 PowerShell 执行策略的最佳方法是什么?

    当你跑步时Get ExecutionPolicy在 PowerShell 中 它得到有效的执行政策 https learn microsoft com en us powershell module microsoft powershell
  • 从网页运行 ClickOnce 应用程序,无需用户操作

    我们有一个基于 Java 的 Web 应用程序以及用 C 编写的相同应用程序 如果 java 检查器发现客户端计算机上没有安装 Java 则应该运行该应用程序 这个想法是运行 C 单击一次 http en wikipedia org wik
  • 已发布的 .Net Core 应用程序警告安装 .Net Core,但它已安装

    我制作了一个 WPF 和控制台应用程序 供某人在我无法访问的私人服务器上使用 我使用 Visual Studio 2019 的内置 发布向导 来创建依赖于框架的单文件应用程序 当该人打开 WPF 应用程序时 他们会看到标准警告 他们单击 是
  • 如果输入被重定向则执行操作

    我想知道如果我的输入被重定向 我应该如何在 C 程序中执行操作 例如 假设我有已编译的程序 prog 并且我将输入 input txt 重定向到它 我这样做 prog lt input txt 我如何在代码中检测到这一点 一般来说 您无法判
  • 不可变类与结构

    以下是类与 C 中的结构的唯一区别 如果我错了 请纠正我 类变量是引用 而结构变量是值 因此在赋值和参数传递中复制结构的整个值 类变量是存储在堆栈上的指针 指向堆上的内存 而结构变量作为值存储在堆上 假设我有一个不可变的结构 该结构的字段一
  • memcpy/memmove 到联合成员,这是否设置“活动”成员?

    重要说明 一些评论者似乎认为我是从工会抄袭的 仔细看memcpy 它从普通旧地址复制uint32 t 它不包含在联合中 另外 我正在复制 通过memcpy 到工会的特定成员 u a16 or u x in a union 不直接到整个联盟本
  • ASP.NET - 在表示层中显示业务层错误

    目前 在我正在开发的 ASP NET 应用程序中 基本验证 即必填字段 是在表示层中使用验证器和 ValidationSummary 完成的 这对我来说非常有用 因为 ValidationSummary 将显示多个错误消息 假设多个验证器设
  • 模板类的模板构造函数的 C++ 显式模板特化

    我有一个像这样的课程 template
  • 将 Lambda 表达式树与 IEnumerable 结合使用

    我一直在尝试了解有关使用 Lamba 表达式树的更多信息 因此我创建了一个简单的示例 这是代码 如果作为 C 程序粘贴到 LINQPad 中 它可以工作 void Main IEnumerable
  • 正则表达式仅允许特定数字

    我正在寻找一个只允许输入特定数字的正则表达式 例如2 4 5 6 10 18 我尝试过类似的东西 2 4 5 6 10 18 我输入的任何内容都无法通过正则表达式 然后计算机用手指着我并大笑 我哪里出错了 单引号是不必要的 您正在寻找的正则
  • 是否允许全局静态标识符以单个 _ 开头?

    换句话说 可能static 文件范围 全局变量恰好以一个下划线开头 而不会产生与 C 实现发生名称冲突的可能性 https www gnu org software libc manual html node Reserved Names
  • 当用户更改 Windows 中的语言键盘布局时如何通知?

    I want to show a message to user when the user changes the language keyboard layout of Windows for example from EN to FR

随机推荐

  • AirPlay 搞乱了本地主机

    自从最新的操作系统更新 Yosemite 以来 我的本地主机服务器充满了来自airplay的错误消息 但我没有使用它 每次都是一样的 31 Oct 2014 05 40 42 code 400 message Bad request ver
  • 获取除法后数字中所有小数位

    我目前正在使用 BigDecimal 它给了我更多的小数 但对于我想要做的事情来说还不够 我需要能够一直到 10 6 位数字 这是我当前的代码 BigDecimal num new BigDecimal 103993 33102 0 pw
  • Visual Studio 2008:使用外部 Debug-DLL 进行调试运行,使用外部 Release-DLL 进行发布运行

    简洁版本 如果在发布模式下从 VS2008 运行程序 我希望它使用pathA externaldll dll 如果在调试模式下从 VS2008 运行程序 我希望它使用pathB externaldll dll 长版 我有一个链接到外部 dl
  • 为什么 cURL 总是返回状态代码?

    我有一些调用 cURL 库的 PHP 代码 我用它来获取 JSON 数据 我已将 cURL opt CURLOPT RETURNTRANSFER 设置为 1 但仍然获得状态代码 代码如下
  • IE枚举选择

    有人可以解释为什么以下 C 行的行为与以下 foeach 块的行为不同吗 string strs asdf asd2 asdf2 strs Select str gt doSomething str foreach string str i
  • 执行连续运行的 PowerShell 命令并将结果获取到表单中

    我有一个在 PowerShell 中运行并不断返回结果的命令 实际上是 DAPR 命令 我知道如何连接到 PowerShell 终端并获取结果 但我的问题是我的命令不断返回结果 我需要将此结果捕获到表单中 using PowerShell
  • 返回 id == 某个元素的行号的 LINQ 语句?

    如何编写 LINQ 语句返回 id some 的元素的 ROW NUMBER 据我所知 没有直接的方法可以做到这一点 您必须将整个查询拉到客户端 然后您可以从那里投影行号 作为替代方案 您可以编写一个使用 ROW NUMBER 的存储过程
  • 如何为 Spring Security 的 SecurityConfig 编写单元测试

    我有一个 Spring Security 类 用于验证用户的令牌 我从Auth0网站获取代码并修改antMatcher我的配置的一部分 这是代码 EnableWebSecurity public class SecurityConfig V
  • 在 numpy 中从较小的矩阵创建较大的矩阵

    我有3个矩阵A B C 我希望创建一个更大的矩阵形式 D 0 A B C 如何在 Numpy 中做到这一点 This numpy bmat numpy zeros appropriate shape A B C 有效 但我不确定如何避免创建
  • Couchbase、减少过大误差

    在我的工作中 我使用 couchbase 但遇到了一些问题 在我调用聚合视图之后 数据从某些设备到达 couchbase 该视图必须通过 2 个键聚合值 timestamp 和 deviceId 在我尝试聚合超过 10k 的值之前 一切都很
  • 在 React Native 中,如何制作像 Instagram 这样的交互式点击并按住模式?

    Instagram 有一个非常酷的交互功能 您可以点击并按住 也称为长按 图像 然后会出现一个交互式弹出窗口 一旦出现 您可以将手指拖动到操作按钮之一 然后移开手指即可应用该操作并关闭弹出窗口 Here it is in action An
  • 将命令行参数传递给使用 Padre 运行的 Perl 程序

    有没有办法将命令行参数传递给从 Padre 菜单 运行 gt 运行脚本 运行的 Perl 程序 在 工具 gt 首选项 gt 语言 Perl5 下 设置 脚本参数 并保存 或者在 工具 gt 首选项 gt 高级 下 查看 run scrip
  • OAuth 2.0 生成令牌和秘密令牌 [关闭]

    很难说出这里问的是什么 这个问题是含糊的 模糊的 不完整的 过于宽泛的或修辞性的 无法以目前的形式得到合理的回答 如需帮助澄清此问题以便重新打开 访问帮助中心 help reopen questions 我正在使用 Apache Oltu
  • 如何动态添加静态资源到spring-boot jar应用程序?

    我有 spring boot 应用程序 它创建带有 html 静态页面的目录 当我通过命令启动应用程序时 mvn spring boot run一切正常 包含静态页面的文件夹创建于 resources 目录和客户端可以访问页面 但我希望将我
  • 通过 sqlalchemy 和 pyodbc 访问 MS SQL 数据库时出现“登录超时已过期”错误

    因此 我在让 sqlalchemy 和 pyodbc 与远程 MS SQL Server 一起使用时遇到了一些麻烦 本地 sqlcmd 工作正常 但当我尝试通过 python 代码读取数据库时却无法正常工作 任何帮助 将不胜感激 环境 Ce
  • PHP FILTER_VALIDATE_EMAIL 最大长度

    使用 PHP 时允许的最大字符长度是多少FILTER VALIDATE EMAIL 我正在测试我的脚本来测试允许的最大长度 200 的函数 但是当我使用超过 200 个字符的电子邮件时 PHPFILTER VALIDATE EMAIL返回假
  • DataBase(datamodel)建立文件夹结构

    计划用 Java 构建基于文件夹的结构 我将使用 GUI 的 jquery 插件 因此我不需要有关如何显示文件夹结构的信息 我正在寻找有关如何存储文件夹信息的后端逻辑 以便可以快速有效地检索它 每个文件夹都会有多个子文件夹 从叶文件夹中 我
  • 扩展 DOMDocument 和 DOMNode:返回对象的问题

    我正在尝试扩展 DOMDocument 类 以便使 XPath 选择更容易 我写了这段代码 class myDOMDocument extends DOMDocument function selectNodes xpath oxpath
  • Airflow 远程日志记录不起作用

    我有一个正在运行的 Apache Airflow 1 8 1 实例 我有一个工作连接 及其 ID 可以写入 Google Cloud Storage 并且我的气流用户有权写入存储桶 我尝试通过添加来使用远程日志存储功能 remote bas
  • 如何在 C# 中以编程方式创建 XML 站点地图

    我正在建立一个网站 现在我想创建它的 xml 站点地图 就像 google 站点地图一样 但我想使用 C 以编程方式创建它 谁能告诉我如何使用网站的基本 url 访问 Web 服务器上的根目录 将所有页面列表放入字符串列表中 来得容易 pr