2016-08-03 59 views
0
<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> 

以上更新的IEnumerable 並保存更改爲 XML我需要修改並保存源文件中的變化。也可能有 Status=1。我正在過濾如下所示的 XDocument在XML文檔C#

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源文件更改更新狀態。

+0

因此問題是,如何更新'status'元素和保存文檔? –

+0

是的,更新了我的問題格式, –

回答

1

是造成混亂的位「的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

+0

讓我試試看,感謝您的及時回覆 –

+0

謝謝,我想通了,我沒有正確調試我的代碼,我接受你的答案。 –