我們有一個基本上是Xml的設置文件,我們正在爲我們正在編寫的可插入模塊進行擴展。基本上我們想使用我們現有的Xml設置,但允許在它們上面寫入擴展方法。龍的故事,如果短期我們有一個XML文件,像這樣:將Xml文件加載到Section,Key和Value Collection中
<Settings>
<SettingsOne Key1_1="Value1"
Key1_2="Value2" />
<SettingsTwo Key2_1="Value1"
Key2_2="Value2" />
</Settings>
我們怎麼能加載這個作爲SettingsEntry的集合,其中SettingsEntry看起來像這樣:
public class SettingsEntry
{
public string Section { get; set; }
public string Key { get; set; }
public string Value { get; set; }
}
凡科會「SettingsOne」鍵將是「Key1_1」,值將是「Value1」。
這是可能的,還是我會走向黑暗之路?
編輯:
OK的LINQ到XML的建議是一個生命拯救,我試圖用XmlSerializer的做到這一點!下面是我到目前爲止,有沒有辦法變成一個選擇這個而不是兩個像我有如下:
var root = XElement.Load(pathToXml);
var sections = from el in root.Elements()
select el.Name;
List<SettingsEntry> settings = new List<SettingsEntry>();
foreach (var item in sections)
{
var attributes = from el in root.Elements(item).Attributes()
select new SettingsEntry()
{
Section = item.LocalName,
Key = el.Name.LocalName,
Value = el.Value
};
settings.AddRange(attributes);
}
return settings;
編輯2:
這似乎是工作。
var sections = from el in root.Elements()
from a in root.Elements(el.Name).Attributes()
select new SettingsEntry()
{
Section = el.Name.LocalName,
Key = a.Name.LocalName,
Value = a.Value
};
是的,這是絕對有可能的 - 我建議你嘗試使用LINQ to XML。想想從元素中的元素doc.Root.Elements查詢元素.Attributes()select ...'然後問一個更詳細的問題,如果你有問題:) – 2014-09-10 13:06:44
顯示你有什麼代碼,我會幫你解決問題。付出一點努力,我會幫助你。 – DidIReallyWriteThat 2014-09-10 13:15:08
謝謝喬恩,這真的很有幫助,並把我推向了正確的道路,卡爾文道歉,如果我已經提出了任何事情,甚至遠程工作,我會發布它,但我完全錯誤的方向! – user351711 2014-09-10 13:18:11