2012-01-09 81 views
1

在應用程序中,我目前正在與用戶一起工作,允許存儲很多在XML文件中分爲不同類別的設置。設置類的C#結構

的XML可能看起來像

<settings> 
    <setting2> 
     <setting3> 
      <value1>foo</value1> 
      <value2>bar</value2> 
     </setting3> 
     <value3>A list of strings</value3> 
    </setting2> 
    <setting4> 
     <value4>An integer</value4> 
    </setting4> 
</settings> 

我感到困惑的是如何最好地結構中含有這些信息的班,我開始做包含的類別和值的列表遞歸類的東西,現在我記得在Java中有一個樹集合類,類似的東西會是最好的解決方案嗎? 你們推薦什麼?

+0

您可以將設置存儲在XDocument中... – 2012-01-09 13:59:06

+0

您可能會考慮xml序列化反序列化。 – adatapost 2012-01-09 13:59:28

回答

2

爲什麼不把整個XML文件加載到XPathDocument中?它很容易使用,而且速度很快。

你可以訪問個人設置,像這樣:

XPathDocument xmldoc = new XPathDocument(settingsFile); 
XPathNavigator nav = xmldoc.CreateNavigator(); 

foreach (XPathNavigator node in nav.Select("settings/setting2/setting3")) 
{ 
    ... 
} 
+1

你在開玩笑嗎?這不可能那麼簡單? – Artmann 2012-01-09 14:06:33

+0

恐怕是這樣的......只要使用Google XPathDocument和XPathNavigator,你會發現有用的例子! – 2012-01-09 14:09:04

1

我會站在更多的面向對象方法。

public abstract class SettingAbstract 
{ 
    public abstract List<Setting> Children {get;set;} 
    public abstract List<object> Values {get;set} 
    public XmlNode SaveMe(); 
} 

和之後的每設置類型

public Setting2 : SettingAbstract 
{ 
    //concrete implementation 
} 


public Setting3 : SettingAbstract 
{ 
    //concrete implementation 
} 
...... 
...... 

事情是這樣的具體實施。

+0

非常感謝 – Artmann 2012-01-09 14:09:11