2016-04-03 64 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);