如何在asp.net项目中加载xml配置文件

时间:2011-04-14 13:33:15

标签: asp.net configuration

我有一些配置要读取一次,所以我将这些属性放在xml文件中:

<items>
  <item id="" name="">
    <page src=""/>
    <page src=""/>
    <page src=""/>
  </item>

  <item id="" name="">
    <page src=""/>
    <page src=""/>
    <page src=""/>
  </item>
............
</items>

在java中,我可以使用jdom或dom4j在servlet的init方法中读取此文件。 然后将这些属性放在List或Map中。

但是在asp.net中,我不知道如何实现这个,有什么建议吗?

2 个答案:

答案 0 :(得分:3)

这假设你正在使用c#。它基本上使用linq到xml读取xml到定义的类中。 GetConfigItems然后将返回List&lt;&gt;的项目。我没有对此进行测试,但它是沿着正确的方向进行的。

public class Item
{
    public string id { get; set; }
    public string name { get; set; }
    public List<Page> Pages { get; set; }
}

public class Page
{
    public string src { get; set; }
}

public class ConfigHelper
{
    public List<Item> GetConfigItems()
    {
        XDocument doc = XDocument.Load("MyConfigFile.xml");
        List<Item> items = (from i in doc.Elements("item")
                            select new Item()
                                {
                                    id = i.Attribute("id").Value,
                                    name = i.Attribute("name").Value,
                                    Pages = (from p in i.Elements("page")
                                             select new Page()
                                             {
                                                 src = p.Attribute("src").Value
                                             }).ToList()
                                }
                           ).ToList();

    }
}

答案 1 :(得分:0)

DavidGouge在这里走在正确的轨道上。但是,他的ConfigHelper方法GetConfigItems()的结构应如下所示:

public List<Item> GetConfigItems()
    {
        XDocument doc = XDocument.Load("MyConfigFile.xml");
        List<Item> items = (from i in doc.Descendants("item")
                            select new Item()
                            {
                                id = i.Attribute("id").Value,
                                name = i.Attribute("name").Value,
                                Pages = (from p in i.Descendants("page")
                                         select new Page()
                                         {
                                             src = p.Attribute("src").Value
                                         }).ToList()
                            }).ToList();
        return items;
    }