2012-07-06 188 views
0

我有一个XML文件。 我想更新(添加一些节点)。 下面是代码的外观:LINQ to XML - 将节点更新并保存到XML文件

var xmlDocuments = XDocument.Load(filePath); 
var documentElementToEdit = xmlDocuments.Element("Container").Element("Documents").Elements("Document").Where(x => x.Element("GUID").Value == GUID).FirstOrDefault(); 
missingIndexData1 = new XElement("IndexData"); 
XElement indexData1 = new XElement("Name", "somename"); 
XElement indexData2 = new XElement("Value", somevalue); 
XElement indexData3 = new XElement("DataType", "3"); 
XElement indexData4 = new XElement("CreationTime", DateTime.Now.ToString("O")); 
XElement indexData5 = new XElement("CreationTimeUTC", DateTime.UtcNow.ToString("O")); 
missingIndexData1.Add(indexData1); 
missingIndexData1.Add(indexData2); 
missingIndexData1.Add(indexData3); 
missingIndexData1.Add(indexData4); 
missingIndexData1.Add(indexData5); 
documentElementToEdit.Element("IndexDatas").Add(missingIndexData1); 
documentElementToEdit.Save(filePath); 

这里做的事情是,它overwrittes原始XML文件只此文档节点。 如何更新原始文件中的文档节点?

+0

您是否尝试过'xmlDocuments.Save(filePath);'作为最后一行? – 2012-07-06 10:39:17

+0

siiiiiiiiiiiiiigh :) – no9 2012-07-16 05:53:01

回答

3

这样做是否覆盖原始XML文件只有这个文档节点。如何更新原始文件中的文档节点?

您需要保存整个文档,而不仅仅是更改的元素。当然,这将重写整个文件,但没有简单的方法。

xmlDocuments.Save(filePath); 
+0

耶很明显..叹了口气。感谢名单。 – no9 2012-07-16 05:52:36