更新 IEnumerable<XElement> 并在 XML 文档 C# 中保存更改
Update IEnumerable<XElement> and save changes in XML document C#
<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");
它returns我IEnumerable<XElement>
。我正在使用 filteredOTPC.ForEach(s=>)
更新状态
如何 update/Merge 在原始 XDocument
实例中修改 IEnumerable<XElement>
并在 XML
源文件中保存更改。
"IEnumerable is separated from 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
<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");
它returns我IEnumerable<XElement>
。我正在使用 filteredOTPC.ForEach(s=>)
如何 update/Merge 在原始 XDocument
实例中修改 IEnumerable<XElement>
并在 XML
源文件中保存更改。
"IEnumerable is separated from 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