2013-04-15 4 views
0

У меня такая конфигурация выглядит так, и я не знаю, как читать, я хочу получить значение, если я выберу продукт или превью?Использовать другую конфигурацию для среды

<configuration> 

    <environment name="product"> 
    <connectionString> connection string</connectionString> 
    <logPath>C:\*****</logPath> 
    <errorLogPath>C:\*****</errorLogPath> 
    <ProcessesNumber>5</ProcessesNumber> 
     <sendAtOnce>100</sendAtOnce> 
    <restInterval>30000</restInterval> 
    <stopTime>30000</stopTime> 
</environment> 

<environment name="preview"> 
    <connectionString> connctionstring </connectionString> 
    <logPath>C:\*****</logPath> 
    <errorLogPath>C:\*****</errorLogPath> 
    <ProcessesNumber>5</ProcessesNumber> 
    <sendAtOnce>100</sendAtOnce> 
    <restInterval>30000</restInterval> 
    <stopTime>30000</stopTime> 
</environment> 

</configuration> 

Как я могу прочитать это при отладке?

+2

Значит ли это [ответ] (http://stackoverflow.com/a/3994081/266143) помочь? Используя это, в каждой сборке будет создан файл .config '.net (Конфигурация) .config', позволяющий иметь отдельные конфигурации debug- и release-config. – CodeCaster

ответ

1

Это довольно легко с помощью LINQ

Это должно помочь вам

class Configuration 
{ 
    public string connectionString { get; set; } 
    public string logPath { get; set; } 
    public string errorLogPath { get; set; } 
    public int ProcessesNumber { get; set; } 
    public int sendAtOnce { get; set; } 
    public int restInterval { get; set; } 
    public int stopTime { get; set; } 
} 

static void Main(string[] args) 
{ 
    try 
    { 
     XDocument doc = XDocument.Load("config.xml"); 
     string conftype = "product"; 

     var configuration = (from config in doc.Elements("configuration").Elements("environment") 
          where config.Attribute("name").Value.ToString() == conftype 
          select new Configuration 
          { 
           connectionString = config.Element("connectionString").Value.ToString(), 
           logPath = config.Element("logPath").Value.ToString(), 
           errorLogPath = config.Element("errorLogPath").Value.ToString(), 
           ProcessesNumber = int.Parse(config.Element("ProcessesNumber").Value.ToString()), 
           sendAtOnce = int.Parse(config.Element("sendAtOnce").Value.ToString()), 
           restInterval = int.Parse(config.Element("restInterval").Value.ToString()), 
           stopTime = int.Parse(config.Element("stopTime").Value.ToString()), 
          }).First(); 
    } 
    catch (Exception e) 
    { 
     Console.WriteLine(e.ToString()); 
    } 
} 
+0

Спасибо, что поделились, он работает. –

+0

Добро пожаловать. Пожалуйста, отметьте ответы. Благодарю. – sarat

0

В C# Я рекомендую использовать Linq для XML. Он находится в стандартной инфраструктуре .net (3.5), и он помогает вам загружать XML и легко читать каждый узел и атрибут.

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