-1

我有一个简单的程序,可以让用户在自定义配置文件中添加一个部分,它的设置比显示的要多。我用所有配置的列表填充了一个 datagridview。我的问题是,填充列表框的方法不知道用户可能添加的所有部分的名称,我试图成为动态的。有没有一种简单的方法可以遍历这些部分并获取它们的名称?还是我必须创建一个部分、集合和元素才能做到这一点?

谢谢。

<?xml version="1.0" encoding="utf-8"?>
<configuration>
 <configSections>
    <section name="Jason" type="SQLQueryOutput.SQLQueryOutputConfigSection, SQLQueryOutput, Version=1.0.0.0, Culture=neutral, PublicKeyToken=760d257b40400289" />
    <section name="Steve" type="SQLQueryOutput.SQLQueryOutputConfigSection, SQLQueryOutput, Version=1.0.0.0, Culture=neutral, PublicKeyToken=760d257b40400289" />
</configSections>
    <Jason OutputFilePath="C:\temp\jason.txt" />
    <Steve OutputFilePath="C:\temp\steve.txt" />
</configuration>
4

2 回答 2

1

如何使用 Linq To Xml 解析您的配置文件。例如,

var xDoc = XDocument.Load(configFile);
var sections = xDoc.XPathSelectElements("//configSections/section")
                    .Select(x=>x.Attributes().ToDictionary(a=>a.Name,a=>a.Value))
                    .ToList();

var name = sections[0]["name"];

或者

var outputFilePaths = xDoc.Root.Elements()
       .Where(d => d.Name.LocalName != "configSections")
       .ToDictionary(e => e.Name.LocalName, e => e.Attribute("OutputFilePath").Value);
于 2013-01-11T22:43:09.850 回答
0

实际上你的configSections元素也可以包含sectionGroup元素。使用Linq 到 Xml

XDocument xdoc = XDocument.Load(config_file_path);
var names =  xdoc.Root.Element("configSections")
                 .Descendants("section") // selects also sectionGroup/section
                 .Select(s => (string)s.Attribute("name"));
于 2013-01-11T22:51:05.217 回答