更新IEnumerable<;XElement>;并将更改保存在XML文档C#中
本文关键字:存在 保存 XML 文档 lt IEnumerable XElement gt 更新 | 更新日期: 2023-09-27 17:59:46
<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
,我需要修改并保存源文档中的更改。也可能存在CCD_ 2。我正在过滤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=>)
更新状态
如何更新/合并原始XDocument
实例中修改后的IEnumerable<XElement>
,并将更改保存在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