我将web.sitemap文件定义为
<?xml version="1.0" encoding="utf-8" ?>
<siteMap xmlns="http://schemas.microsoft.com/AspNet/SiteMap-File-1.0" >
<siteMapNode url="" title="" description="">
</siteMapNode>
</siteMap>
我正在尝试使用以下代码编写xml
var writer = new XmlTextWriter("/Web.sitemap", null);
var xmlElements = new XElement("siteMapNode",
new XAttribute("title", "Movies"),
movies.Select(i => new XElement
("siteMapNode",
new XAttribute("title", i.MovieName),
new XAttribute("url", string.Format("/Movie/{0}.html", i.MovieName))
)));
writer.WriteString(xmlElements.ToString());
但文件仍然像以前一样,上面的代码没有写任何东西。有什么建议吗?
答案 0 :(得分:1)
您的代码存在一些问题:
1)首先,由于XmlTextWriter
是一次性的,因此Dispose
是好的(例如using
语句)。如果将其添加到代码中,则会写入文件,但是......
2)WriteString
和XmlTextWriter
的组合显然会产生转义标记
<siteMapNode title="Movies">
<siteMapNode title="Rambo" url="/Movie/Rambo.html" />
</siteMapNode>
所以我建议将writer.WriteString(xmlElements.ToString());
更改为xmlElements.Save(writer);
。但...
3)您没有正确格式化XML,因为root是siteMapNode
并且应该是siteMap
最终代码:
List<Movie> movies = new List<Movie>() { new Movie() { MovieName = "Rambo" } };
using (var writer = new XmlTextWriter("Web.sitemap", null))
{
var xmlElements = new XElement("siteMap",
new XAttribute("title", "Movies"),
movies.Select(i => new XElement
("siteMapNode",
new XAttribute("title", i.MovieName),
new XAttribute("url", string.Format("/Movie/{0}.html", i.MovieName))
)));
xmlElements.Save(writer);
}