2012-01-09 58 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