我想创建一个动态的Web.Sitemap,我的意思是该文件应该是可编辑的,并且我希望能够从我的代码中编辑它的节点。我已经在一个按钮的单击事件上尝试过了。
SiteMapNode smRoot = SiteMap.RootNode;
SiteMapNode smNode = new
SiteMapNode(smRoot.Provider, "Key", "~/Default.aspx", "Default");
smRoot.ChildNodes.Add(smNode);但是在最后一行得到了错误的Collection is read-only.。
我如何才能做到这一点?
发布于 2013-08-27 19:49:47
试试这个。
public void GetSiteMap(List<string> MyList)
{
/// Add namespace:
///using System.Xml;
///using System.Data;
///using System.Xml.Serialization;
String MyHome = "http://www.mysite.com" ;//Create Absolute url start.
// create DataSet and DataTable if needed, or use List Array only
/*
DataTable DT = new DataTable();
foreach (var array in MyList)
{
DT.Rows.Add(array);
}
*/
XmlDocument doc = new XmlDocument();// create XML Documents
XmlDeclaration dec = doc.CreateXmlDeclaration("1.0", null, null);// Create the head element
doc.AppendChild(dec);
XmlElement root = doc.CreateElement("urlset");// Create the root element with attributes
root.SetAttribute("xmlns:xsi", "http://www.w3.org/2001/XMLSchema-instance");
root.SetAttribute("xmlns:xsd", "http://www.w3.org/2001/XMLSchema");
root.SetAttribute("xmlns", "http://www.sitemaps.org/schemas/sitemap/0.9");
doc.AppendChild(root);
//foreach (DataRow DR in DT.Rows)// if use DataTable or
foreach (var array in MyList)// if use List only
{
XmlElement MyUrl = doc.CreateElement("url");//create child node for root node
XmlElement Loc = doc.CreateElement("loc");//create child node for MyUrl node
XmlElement Freq = doc.CreateElement("changefreq");//create child node for MyUrl node
XmlElement Pri = doc.CreateElement("priority");//create child node for MyUrl node
Loc.InnerText = MyHome + "/" + array;//set value for 1. child node Loc node
Freq.InnerText = "daily";//set value for 1. child node-Freq node
Pri.InnerText = "0.85";//set value for 1. child node-Pri node
MyUrl.AppendChild(Loc); //add child Loc node to MyUrl node
MyUrl.AppendChild(Freq);//add child Freq node to MyUrl node
MyUrl.AppendChild(Pri);//add child Pri node to MyUrl node
root.AppendChild(MyUrl);//add child MyUrl node to root node
}
Response.Clear();
XmlSerializer xs = new XmlSerializer(typeof(XmlDocument));
Response.ContentType = "text/xml";
xs.Serialize(Response.Output, doc);
Response.End();
}在PageLoad()上调用这个空函数
:)
https://stackoverflow.com/questions/12193736
复制相似问题