私はlinqを使用して非常に単純なXMLファイルを読み込もうとしています。私は子ノードを介してループを使用してそれを行う方法を知っていますが、私はlinqを学ぼうとしています。とにかく、ファイルがあります:単純なXMLファイルを読む
<firstElement>
<Setting Name="appDataPath" Value="some\\path" />
<Setting Name="appConfigFileName" Value="somename.xml" />
<Setting Name="appConfigFilePath" Value="some\\path" />
</firstElement>
と設定属性を取得したいと思います。私はこのコードを持っています:
//Load xml
XDocument xdoc = XDocument.Load(fullyQualifiedPath);
var settings = from item in xdoc.Descendants("firstElement")
select new
{
name = item.Attribute("Name").Value,
val = item.Attribute("Value").Value
};
// create a dictionary
Dictionary<string, string> settingsDictionary =
new Dictionary<string, string>();
//Loop through results
foreach (var setting in settings)
{
settingsDictionary.Add(setting.name, setting.val);
}
xdoc.Save(fullyQualifiedPath);
何らかの理由で、クエリの後に設定がnullです。何か不足していますか?のみの設定ノードを取得するために
「eStack」とは何ですか? –
'xdoc.Save(fullyQualifiedPath);はあなたの問題と関係がありますか?保存後にディスク上のxml文書で空白になっていますが、それは問題ですか?この行を削除しないと、問題に混乱が生じます。また、 'Descendants(" eStack ")'という部分がありますが、断片には 'eStack'ノードはありません。 – Igor
これを試してください: 'from item in xdoc.Descendants(" Setting ")' –