0
我是一個liitle位綠色的節儉xml和linq在c#中。這是我的代碼:如何更新xml元素的集合?
public static void EditConfiguration (DesignConfiguration design)
{
XDocument configXml = XDocument.Load(configXMLFileName);
var updateData = configXml.Root.Elements("Design").Where(element => (String)element.Attribute("name") == design.DesignName).FirstOrDefault();
if (updateData != null)
{
var myElements = updateData.Elements(); //All the elements under th Design node
configXml.Save(configXMLFileName);
}
}
在myElements變量有這樣的元件:
<SourceFolder>C:\CSF_Packages</SourceFolder>
<DestinationFolder>C:\Inetpub</DestinationFolder>
<CopyLookups>True</CopyLookups>
<CopyImages>False</CopyImages>
<ImageSourceFolder>None</ImageSourceFolder>
<ImageDesinationFolder>None</ImageDesinationFolder>
我要更新每個用從設計配置對象的值這個元素。這不會是這麼辛苦,如果我曾在一個對象的價值,但也有像這樣的值:
design.SourceFolder design.DesitnationFolder
等(就像元素)。該對象爲以上元素提供新值。很明顯,我認爲我應該用foreach循環,但是當我使用它的結果不是我想要......
這是我的foreach循環:
foreach (var item in myElements)
{
item.SetElementValue("SourceFolder", design.SourceFolder);
}
在循環出現只是演示需求的一個元素,但我想把更多的元素放在循環中。這是我所得到的:
<SourceFolder>C:\CSF_Packages<SourceFolder>C:\CSF_Packages</SourceFolder></SourceFolder>
<DestinationFolder>None<SourceFolder>C:\CSF_Packages</SourceFolder></DestinationFolder>
<CopyLookups>True<SourceFolder>C:\CSF_Packages</SourceFolder></CopyLookups>
<CopyImages>False<SourceFolder>C:\CSF_Packages</SourceFolder></CopyImages>
<ImageSourceFolder>C:\Inetpub<SourceFolder>C:\CSF_Packages</SourceFolder></ImageSourceFolder>
<ImageDesinationFolder>None<SourceFolder>C:\CSF_Packages</SourceFolder></ImageDesinationFolder>
我想有:
<SourceFolder>new_value_from the DesignConfiguration object from the SourceFolder property</SourceFolder>
<DestinationFolder>new_value_from the DesignConfiguration object from the Desitnation Folder property</DestinationFolder>
<CopyLookups>new_value_from the DesignConfiguration object from the CopyLookups property</CopyLookups>
等等...... 請幫助的應力noobie :)非常感謝你。
你會得到什麼結果與foreach循環,你會得到什麼結果? –
我已經更新了我的信息,我想要做什麼:) Soryy的那個...... –
最後一個XML的嵌套是完全錯誤的。請修復它。 –