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("<?xml version='1.0' encoding='gb2312'?>" + "<bookstore>" + "<book genre='fantasy' ISBN='2-3631-4'>" + "<title>Oberon's Legacy</title>" + "<author>Corets, Eva</author>" + "<price>5.95</price>" + "</book>" + "</bookstore>"); xmldoc.Save(Server.MapPath("bookstore2.xml")); //保存 }
如果如下:
<?xml version="1.0" encoding="gb2312" ?> <bookstore> <book genre="fantasy" ISBN="2-3631-4"> <title>Oberon's Legacy</title> <author>Corets, Eva</author> <price>5.95</price> </book> </bookstore>
不是我想要的网站地图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"; /// <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>
希望可以帮助到你!
.net 生成网站地图 sitemap.xml
时间: 2024-10-24 20:23:32