【发布时间】:2014-05-30 07:59:08
【问题描述】:
我有这个 XML 文件:
<RootNode>
<Node1>Value1</Node1>
<Node2>Value2</Node2>
<Node3>Value3</Node3>
<Node4>
<SubNode1>SubValue1</SubNode1>
<SubNode2>SubValue2</SubNode2>
<SubNode3>SubValue3</SubNode3>
<SubNode4>SubValue4</SubNode4>
</Node4>
<Node4>
<SubNode1>SubValue1</SubNode1>
<SubNode2>SubValue2</SubNode2>
<SubNode3>SubValue3</SubNode3>
<SubNode4>SubValue4</SubNode4>
</Node4>
</RootNode>
我有更多像“Node4”这样的节点。我想用 LINQ 将这些项目保存在字典中,但我做不到。
谢谢!
编辑:
我只尝试这个(对不起代码,但我是 LINQ 的新手,这个代码只尝试插入节点 4 及其子节点):
XDocument xDocument = XDocument.Load(streamReader);
Dictionary<string, List<string>> datas = new Dictionary<string, List<string>>();
foreach (XElement item in xDocument.Root.Elements().Where(x => x.Elements().Count() > 0))
{
datas.Add(item.Name.LocalName, item.Elements("SubNode1").Select(x => x.Value).ToList());
}
但这会在第二次迭代时返回重复键的错误。这很正常,因为其他的Node4也叫Node4。
【问题讨论】:
-
如果 subnote1 是值,你的字典键是什么?我会更多地看到一个列表而不是字典
-
您到底想在字典中存储什么?
-
我想插入所有节点及其值,对于节点 4,我想在同一个字典中插入作为键 SubNode1 值和作为值的其余部分的 List
值。
标签: c# xml linq dictionary