我在查找如何在foreach循环中向列表中添加值时遇到问题。我想从XML文档中获取值(目前使用xpath)并将值添加到列表中。我遇到了一个错误,其中c#不允许你直接分配给foreach迭代变量,所以我不确定如何将值放入列表而不直接赋值给变量。
这是我的XML:
List<string> options = null;
foreach(string option in options)
{
option = config.XPathSelectElement("//config/options/option").Value;
options.Add(option);
}
这是我的代码:
{{1}}
我现在收到错误,因为我无法分配给迭代变量。使用Linq执行查询会更好吗?
答案 0 :(得分:1)
修复XML以便解析之后,这将为您提供包含List<String>
元素内部文本的option
。
var config = XDocument.Parse(@"<?xml version=""1.0"" encoding=""UTF-8""?>
<config>
<optionList>
<option>true</option>
<option>false</option>
</optionList>
</config>");
List<String> options = new List<string>();
// We're now calling XPathSelectElements() -- elementS, plural. We want all
// of them, not just the first one.
foreach (var elem in config.XPathSelectElements("/config/optionList/option"))
{
options.Add(elem.Value);
}
首先,我们创建要添加项目的列表。然后我们使用foreach
循环遍历已经有东西的集合。
您可以使用LINQ执行此操作,但现在了解如何使用foreach
循环更为重要。
答案 1 :(得分:0)
首先,您的XML文件中存在错误,因为您有一个不会打开的结束M = |7 8 9|
|1 2 3|
|4 5 6|
标记。
新XML ......
</directories>
加载XML ...
<?xml version="1.0" encoding="UTF-8"?>
<config>
<optionList>
<option>true</option>
<option>false</option>
</optionList>
</config>
检索您需要的信息......
XmlDocument memberLists = new XmlDocument();
memberLists.Load(pathname);
XmlNodeList memberlist = memberLists.SelectNodes("//config/optionlist");
希望这就是你所需要的。