Читать XML-файл, как чтение файла App.Config в C # - PullRequest
0 голосов
/ 17 октября 2019

В моем проекте WPF мне нужно иметь xml-файл, похожий на файл app.config. Поэтому я добавил в свой проект файл xml (Picture.xml), содержимое которого показано ниже:

  <?xml version="1.0" encoding="utf-8" ?>
  <Map>
     <add filenumber="1" value="1.png"/>
     <add filenumber="2" value="2.png"/>
     <add filenumber="3" value="3.png"/>
     <add filenumber="4" value="4.png"/>
 </Map>

Я попытался получить значение определенного номера файла, выполнив действия, показанные ниже.

 XDocument doc = XDocument.Load("Picture.xml");           
 var keys = doc.Descendants("add").Select(x => 
            x.Attribute("filenumber").Value);

Но он не получает значение для определенного номера файла. Есть ли способ получить значение определенного ключа, как в app.config. Если мы используем App.Config, то мы можем получить значение ключа, используя код

      ConfigurationManager.AppSetting["key"] 

примерно так.

Есть ли аналогичный способ получить подобное значение из файла Picture.xml?

Если я поставлю 4 в качестве номера файла (ключа), то я должен получить "4.png"(значение).

1 Ответ

1 голос
/ 17 октября 2019

Попробуйте следующее:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Xml;
using System.Xml.Linq;

namespace ConsoleApplication1
{
    class Program
    {
        const string FILENAME = @"c:\temp\test.xml";
        static void Main(string[] args)
        {
            XDocument doc = XDocument.Load(FILENAME);

            Dictionary<int, string> dict = doc.Descendants("add")
                .GroupBy(x => (int)x.Attribute("filenumber"), y => (string)y.Attribute("value"))
                .ToDictionary(x => x.Key, y => y.FirstOrDefault());

        }
    }

}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...