在我的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”(值)。
答案 0 :(得分: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());
}
}
}