【问题标题】:Read XML File like App.Config file reading in C#读取 XML 文件,如在 C# 中读取 App.Config 文件
【发布时间】:2019-10-18 00:59:03
【问题描述】:

在我的 WPF 项目中,我需要一个类似于 app.config 文件的 xml 文件。所以我在我的项目中添加了一个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,那么我们可以通过代码获取key的值

      ConfigurationManager.AppSetting["key"] 

类似的东西。

有没有类似的方法可以从 Picture.xml 文件中获取这样的值?

如果我提供 4 作为文件编号(键),那么我应该得到“4.png”(值)。

【问题讨论】:

  • keys 的值是多少?你期望它是什么?
  • @devlincarnate 它不是您上面指定的副本。首先阅读我的问题。它没有任何程度的阅读。它只是获取特定键的值。

标签: c# xml


【解决方案1】:

尝试以下:

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());

        }
    }

}

【讨论】:

    猜你喜欢
    • 2011-01-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-03-19
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多