cos*_*son 5 c# xml linq-to-xml
我有一个XML文件,看起来像:
<Cities>
<Name>Seattle</Name>
<State>WA</State>
<Population>552105</Population>
</Cities>
Run Code Online (Sandbox Code Playgroud)
我想将城市信息加载到字典中,以便我的字典看起来像:
cityDictionary("Name") = "Seattle"
cityDictionary("State") = "WA"
cityDictionary("Population") = "552105"
Run Code Online (Sandbox Code Playgroud)
以下代码确实有效:
var doc = XDocument.Load(@"..\..\Cities.xml");
var rootNodes = doc.Root.DescendantNodes().OfType<XElement>();
var keyValuePairs = from n in rootNodes
select new
{
TagName = n.Name,
TagValue = n.Value
};
Dicitionary<string, string> allItems = new Dictionary<string, string>();
foreach (var token in keyValuePairs) {
allItems.Add(token.TagName.ToString(), token.TagValue.ToString());
}
Run Code Online (Sandbox Code Playgroud)
但我想一步到位.
有什么建议?
Ada*_*dam 10
为什么这么复杂?以下是如何在方法链语法中执行此操作:
var allItems = rootNodes.ToDictionary(n => n.Name.ToString(), n => n.Value);
Run Code Online (Sandbox Code Playgroud)
或者只是作为一个普通的旧循环,如果你需要使用旧版本的C#或者希望保持老式:
var allItems = new Dictionary<string, string>();
foreach (var node in rootNodes)
{
allItems.Add(node.Name.ToString(), node.Value);
}
Run Code Online (Sandbox Code Playgroud)
试试这个 ToDictionary.
Dictionary<string, string> allItems = rootNodes.ToDictionary(v => v.Name, v => v.Value);
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
10409 次 |
| 最近记录: |