我正在尝试使用linq读取一个非常简单的xml文件。我知道如何在子节点上使用for循环但我正在尝试学习linq。无论如何,我有一个文件:
<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);
由于某些原因,查询后设置为空。我错过了什么吗?
答案 0 :(得分:2)
只获取设置节点写:
obj
答案 1 :(得分:1)
您没有任何名为eStack
的元素。试试这个......
var settingsDictionary = xdoc.Descendants("Setting")
.ToDictionary(x => (string)x.Attribute("Name"),
x => (string)x.Attribute("Value")
);