LINQ to XML - 更新节点并将其保存到 XML 文件

Posted

技术标签:

【中文标题】LINQ to XML - 更新节点并将其保存到 XML 文件【英文标题】:LINQ to XML - Update and save a node to XML file 【发布时间】:2012-07-06 10:36:43 【问题描述】:

我有一个 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);

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

【问题讨论】:

你试过xmlDocuments.Save(filePath);作为最后一行吗? 【参考方案1】:

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

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

xmlDocuments.Save(filePath);

【讨论】:

是的,很明显.. 叹息。谢谢。

以上是关于LINQ to XML - 更新节点并将其保存到 XML 文件的主要内容,如果未能解决你的问题,请参考以下文章

c# LINQ-to-XML 更新(保存)排序后文件中的元素列表

如何使用 Linq to XML 将 HTML 保存在 XML 文件中?

Java / Android - 读取、操作 XML 文件并将其保存到内部存储

LINQ to XML - 从文件加载 XML 片段

使用 Linq to XML 访问 XML 中的二级节点

Linq XML to Object,其中 xml 节点具有嵌套元素