2016-04-03 61 views
1

我想使用C#在我的网站上添加一些URL到xml文件。
我已经在网站Root上创建了一个XML文件。 XML文件的内容是:
使用Asp.net和C将嵌套XML节点添加到xml文件#

<?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" xsi:schemaLocation="http://www.sitemaps.org/schemas/sitemap/0.9&#xD;&#xA;http://www.sitemaps.org/schemas/sitemap/0.9/sitemap.xsd"> 
     <url> 
     <loc>http://www.structure.com/Structure.aspx?id=1</loc> 
     </url> 
</urlset> 

现在我想添加新<url>节点与<loc>节点XML文件,我要像

<?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" xsi:schemaLocation="http://www.sitemaps.org/schemas/sitemap/0.9&#xD;&#xA;http://www.sitemaps.org/schemas/sitemap/0.9/sitemap.xsd"> 
     <url> 
     <loc>http://www.structure.com/Structure.aspx?id=1</loc> 
     </url> 
     <url> 
     <loc>http://www.structure.com/Structure.aspx?id=2</loc> 
     </url> 
</urlset> 

XML内容的变化我尝试做一个函数,从网络表单获取url字符串,并且它是asp上的触发器:Button点击

protected void Button1_Click(object sender, EventArgs e) 
    { 
     insertSiteMap("http://www.structure.com/Structure.aspx?id=2"); 
    } 

而且功能:

private void insertSiteMap(string pageurl) 
    { 
     //Load XML Schema 
     System.Xml.XmlDocument originalXml = new System.Xml.XmlDocument(); 
     originalXml.Load(Server.MapPath("../sitemap.xml")); 
     XmlElement URL = originalXml.CreateElement("url"); 

     XmlElement LOC = originalXml.CreateElement("loc"); 
     XmlText LOCText = originalXml.CreateTextNode(pageurl); 
     LOC.AppendChild(LOCText); 

     URL.AppendChild(LOC); 

     XmlNode newUrl = originalXml.GetElementsByTagName("url")[0]; 
     originalXml.DocumentElement.PrependChild(newUrl); 

     originalXml.Save(Server.MapPath("../sitemap.xml")); 
    } 

我没有任何错误和Visual Studio给我发短信的XML文件已被修改,但是当我打开该文件没有对XML文件进行任何更改:(。
我做错了任何地方?

回答

3

一旦用变量URL创建了新元素,您需要插入例如originalXml.DocumentElement.AppendChild(URL);

但是,请注意,在您的原始XML中,当您的C#代码在没有名称空间中创建新的XmlElements时使用命名空间,因此您还需要修复元素创建,例如,

XmlElement url = originalXml.CreateElement("url", originalXml.DocumentElement.NamespaceURI); 
XmlElement loc = originalXml.CreateElement("loc", originalXml.DocumentElement.NamespaceURI); 
loc.InnerText = pageurl; 
url.AppendChild(loc); 
originalXml.DocumentElement.AppendChild(url);