C#设置类的结构

时间:2012-01-09 13:55:20

标签: c# xml structure

在我正在使用的应用程序中,允许用户在XML文件中存储许多分为不同类别的设置。

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中有一个树集合类这样的东西会是最好的解决方案吗? 你们推荐什么?

2 个答案:

答案 0 :(得分:2)

为什么不将整个XML文件加载到XPathDocument中?它易于使用且速度非常快。

您可以像这样访问各个设置:

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

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

答案 1 :(得分:1)

我会支持更多的OO方法。

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
}
......
......

像这样。