-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

LinqToXmlを使用して構成ファイルを解析するのはどうですか。例えば、

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 に答える