<OTPC>
<OTPCDATA>
<PROGRAM>LOT676-Q1T2-24 RevB @MC1 PVDB Version 3.8</PROGRAM>
<TOTAL_QTY>54123</TOTAL_QTY>
<PASS_QTY>60866</PASS_QTY>
<FAIL_QTY>3257</FAIL_QTY>
<FILE_DATE>7/29/2016 10:05:47 AM</FILE_DATE>
<FILE_TIME>10:05:47</FILE_TIME>
<STATUS>0</STATUS>
</OTPCDATA>
....So On---
</OTPC>
上面是XML
我需要修改并保存源文档中的更改。可能有Status=1
以及。我正在过滤XDocument
像下面这样。
XDocument unreadOTPC = XDocument.Load(pathToRead);
var filteredOTPC = unreadOTPC.Element("OTPC")
.Descendants("OTPCDATA")
.Where(x => x.Element("STATUS").Value == "0");
它返回我IEnumerable<XElement>
。我正在使用 filteredOTPC.ForEach(s=>)
更新状态
如何更新/合并修改的 IEnumerable<XElement>
原版XDocument
实例并将更改保存在XML
中源文件。
最佳答案
“IEnumerable 与 unreadOTPC 分离” 引起了一些困惑,如果我正确理解了问题,您需要更新 Xml< 中的
并保存文档。STATUS
值
所以,你可以这样做。
XDocument doc = XDocument.Load(filepath);
var elements = doc
.Descendants("OTPCDATA") //flatten your hierarchy
.Where(x=>(string)x.Element("STATUS") =="0") // filter those elements whose nested status is "0".
.Select(x=>x.Element("STATUS")); // Select those elements.
现在您可以使用任何循环逻辑更新元素。
// Now update element value
foreach(var element in elements)
{
// your logic.
element.Value = "1";
}
doc.Save();
检查这个Demo
关于c# - 更新 IEnumerable<XElement> 并将更改保存在 XML 文档中 C#,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38733485/