在使用LINQ to XML生成动态sitemap.xml时,正确生成xsi:schemalocation属性的方法如下:
- 首先,需要引入相关的命名空间:using System.Xml.Linq;
- 创建一个XNamespace对象,用于表示XML文档中的命名空间:XNamespace xmlns = "http://www.sitemaps.org/schemas/sitemap/0.9";
XNamespace xsi = "http://www.w3.org/2001/XMLSchema-instance";
- 创建一个XElement对象,表示根节点"urlset",并添加xsi:schemalocation属性:XElement urlset = new XElement(xmlns + "urlset",
new XAttribute(XNamespace.Xmlns + "xsi", xsi),
new XAttribute(xsi + "schemaLocation", "http://www.sitemaps.org/schemas/sitemap/0.9 http://www.sitemaps.org/schemas/sitemap/0.9/sitemap.xsd"));
- 使用LINQ to XML生成其他节点,并将它们添加到urlset中。例如,添加一个"url"节点:XElement url = new XElement(xmlns + "url",
new XElement(xmlns + "loc", "http://www.example.com"),
new XElement(xmlns + "lastmod", DateTime.Now.ToString("yyyy-MM-dd")));
urlset.Add(url);
- 最后,将生成的XML文档保存到文件或其他存储介质中:urlset.Save("sitemap.xml");
这样,生成的sitemap.xml文件中就包含了正确的xsi:schemalocation属性。