#asp.net #configuration
#asp.net #конфигурация
Вопрос:
У меня есть некоторая конфигурация, которую нужно прочитать один раз, поэтому я помещаю эти атрибуты в XML-файл:
<items>
<item id="" name="">
<page src=""/>
<page src=""/>
<page src=""/>
</item>
<item id="" name="">
<page src=""/>
<page src=""/>
<page src=""/>
</item>
............
</items>
В Java я могу прочитать этот файл в методе init сервлета, используя jdom или dom4j.
Затем поместите эти атрибуты в список или карту.
Но в asp.net Я понятия не имею, как это реализовать, есть предложения?
Ответ №1:
Предполагается, что вы используете c #. Он в основном считывает xml с использованием linq to xml в определенные классы. Затем GetConfigItems вернет список<> элементов. Я не тестировал это, но это в правильном направлении.
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();
}
}
Ответ №2:
Дэвид Дуге здесь на правильном пути. Однако его метод 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;
}