我正在尝试使用LINQ来生成我的Sitemap。站点地图中的每个网址都使用以下C#代码生成:
XElement locElement = new XElement("loc", location);
XElement lastmodElement = new XElement("lastmod", modifiedDate.ToString("yyyy-MM-dd"));
XElement changefreqElement = new XElement("changefreq", changeFrequency);
XElement urlElement = new XElement("url");
urlElement.Add(locElement);
urlElement.Add(lastmodElement);
urlElement.Add(changefreqElement);
当我生成我的站点地图时,我得到的XML如下所示:
<?xml version="1.0" encoding="utf-8"?>
<urlset xmlns="http://www.sitemaps.org/schemas/sitemap/0.9">
<url xmlns="">
<loc>http://www.mydomain.com/default.aspx</loc>
<lastmod>2011-05-20</lastmod>
<changefreq>never</changefreq>
</url>
</urlset>
我的问题是,如何从url元素中删除“xmlns =”“”?除此之外,一切都是正确的。
感谢您的帮助!
答案 0 :(得分:6)
听起来您希望站点地图命名空间中的url
元素(以及所有子元素) ,因此您需要:
XNamespace ns = "http://www.sitemaps.org/schemas/sitemap/0.9";
XElement locElement = new XElement(ns + "loc", location);
XElement lastmodElement = new XElement(ns + "lastmod", modifiedDate.ToString("yyyy-MM-dd"));
XElement changefreqElement = new XElement(ns + "changefreq", changeFrequency);
XElement urlElement = new XElement(ns + "url");
urlElement.Add(locElement);
urlElement.Add(lastmodElement);
urlElement.Add(changefreqElement);
传统上用于LINQ to XML的或更多:
XNamespace ns = "http://www.sitemaps.org/schemas/sitemap/0.9";
XElement urlElement = new XElement(ns + "url",
new XElement(ns + "loc", location);
new XElement(ns + "lastmod", modifiedDate.ToString("yyyy-MM-dd"),
new XElement(ns + "changefreq", changeFrequency));