2010-07-12 2 views
4

Мне нужно прочитать элементы конфигурации из web.config. Пусть это будет мой web.config.Как прочитать вложенный элемент конфигурации из web.config?

<family> 
    <parents> 
    <child name="Hello"/> 
    <child name="World"/> 
    </parents> 
<parents> 
    <child name="Hello1"/> 
    <child name="World2"/> 
    </parents> 
</family> 

У меня есть что-то вроде этого, мне нужно прочитать это в сборнике. Как я могу это сделать ????

ответ

2

Вам необходимо определить свой собственный раздел конфигурации, который позволит вам правильно прочитать вложенный элемент конфигурации. Кстати, это тот же самый метод, что все остальные используют, например, компоненты Enterprise Library, NHibernate и т.д.

Шаги, которые необходимо предпринять очень просто, и учебник приводится здесь:

http://msdn.microsoft.com/en-us/library/2tw134k3.aspx

0

Вам необходимо использовать класс ConfigurationElementCollection. См. this sample на MSDN

3

В общем, вы можете хранить простые параметры приложения и строку подключения в файле web.config (или app.config), но что-то более сложное, например, графа объектов или XML (как в вашем случае) и вы должны рассмотреть другой метод.

Они могут быть полезны:

How do I store an XML value in my .NET App.Config file

(это предполагает, кодирующая XML в качестве параметра приложения)

Однако было бы лучше иметь отдельный файл данных XML и преобразовать его в граф объектов с помощью Linq-To-XML (см. reference) или XPath и XmlDocument и связанные с ним классы.


Редактировать: см. Другой ответ, который позволяет XML в файле конфигурации. Это более прямой ответ на ваши точные вопросы, но я оставлю это здесь для справки. В целом это похоже на то, что ваши данные не являются данными конфигурации (больше похожими на runtime/user data) и не входят в файл .config: поэтому я бы рекомендовал хранить его в отдельном XML-файле и иметь запись в файле конфигурации указывая на имя файла отдельного файла XML.


Надеюсь, что это поможет!

+0

Я пытаюсь сделать что-то вроде этого. vbcity.com/forums/t/161393.aspx, я получаю нулевые значения – nimi

0
public struct Child 
{ 
    public string name; 
    public Child(string name) 
    { 
     this.name = name; 
    } 
} 

public class Parent 
{ 
    public List<Child> childs = new List<Child>(); 

    public static List<Parent> ReadParentsFromXml(string fileName) 
    { 
     List<Parent> parents = new List<Parent>(); 
     System.Xml.XmlTextReader doc = new System.Xml.XmlTextReader(fileName); 
     Parent element = new Parent(); 

     while (doc.Read()) 
     { 
      switch (doc.Name) 
      { 
       case "parents": 
        if (doc.NodeType == System.Xml.XmlNodeType.EndElement) 
        { 
         parents.Add(element); 
         element = new Parent(); 
        } 
        break; 
       case "child": 
        if(doc.NodeType != System.Xml.XmlNodeType.EndElement) 
         element.childs.Add(new Child(doc.GetAttribute(0))); 
        break; 
      } 
     } 

     return parents; 
    } 
} 
+1

Я предполагаю, что этот код должен читать обычный xml-файл. Мне нужно прочитать web.config с помощью элемента конфигурации. – nimi

+0

Я пытаюсь сделать что-то вроде этого. http://vbcity.com/forums/t/161393.aspx, я получаю нулевые значения. – nimi

Смежные вопросы