2013-05-29 131 views
4

我在我的App_Data文件夾中有一個xml。我需要編輯該XML的節點中的值。我曾試圖爲 -如何用新值更新XML節點?

 XmlDocument xDoc = new XmlDocument(); 
     xDoc.Load(Server.MapPath("~/App_Data/conf.xml.config")); 

     XmlNodeList aNodes = xDoc.SelectNodes("/ConfigInf"); 
     foreach (XmlNode node in aNodes) 
     { 
      XmlNode child1 = node.SelectSingleNode("Node1"); 
      XmlNode child2 = node.SelectSingleNode("Node2");    

      child1.InnerText = "Value1"; 
      child2.InnerText = "Value2"; 
     } 

我需要重新編寫新值XML作爲當過我嘗試再次訪問相同的XML,它應該包含新的值。但是當我訪問xml時,只有當我這樣打電話時,我纔會得到舊的(初始值) - Test.LoadConf(Server.MapPath("./App_Data/conf.xml.config"));。如何用新值寫入XML或使用任何其他方法創建具有新值的新XML?(因爲我需要在單個頁面中訪問此xml)

+4

你可能想將文件保存這些更改後,他們只已經應用在記憶中。 –

回答

6

編輯後調用保存,您可以給出不同的名稱if你不需要覆蓋原來的

eg命名爲new.conf.xml.config

xDoc.Save(Server.MapPath("~/App_Data/new.conf.xml.config")); 

下一次新的文件,你可以加載原來像往常一樣

xDoc.Load(Server.MapPath("~/App_Data/conf.xml.config")); 
+0

Damith,非常感謝您的回答。但是,它需要一些時間,因爲Visual Studio顯示一個消息框,說該文件已經在源代碼之外進行了修改......有什麼方法可以避免這種情況? – Sandy

+0

,因爲您已將此配置文件添加到您的解決方案。當應用程序的文件更新VS​​警告你,該文件修改外..當你真正部署這個應用程序沒有問題。不要擔心這個 – Damith

+0

沒有問題,因爲我保存到新的XML文件。感謝您的寶貴意見。 – Sandy

0

你還沒有那個

使用xDoc.save(Server.MapPath("~/App_Data/conf.xml.config"));

0

nodeValue屬性後的文件保存可以用來改變文本節點的值。

下面的代碼改變第一個元素的文本節點值:舉例:

xmlDoc=loadXMLDoc("books.xml"); 

x=xmlDoc.getElementsByTagName("title")[0].childNodes[0]; 
x.nodeValue="Easy Cooking"; 

來源:http://www.w3schools.com/DOM/dom_nodes_set.asp

0
node["Node1"].InnerText = "Value1"; 
node["Node2"].InnerText = "Value2";