1

使用 xmltextreader,我将如何加载哈希表。

XML:

<base><user name="john">2342343</user><user name="mark">239099393</user></base>

之前有人问过这个问题,但它使用了一些我还不太熟悉的时髦的 linq。

4

1 回答 1

2

好吧,LINQ to XML 解决方案真的很简单,所以我建议我们尽量让您适应它,而不是创建一个更复杂的解决方案。这是代码,有很多解释......

// Load the whole document into memory, as an element
XElement root = XElement.Load(xmlReader);

// Get a sequence of users
IEnumerable<XElement> users = root.Elements("user");

// Convert this sequence to a dictionary...
Dictionary<string, string> userMap = users.ToDictionary(
      element => element.Attribute("name").Value, // Key selector
      element => element.Value);                 // Value selector

当然,您可以一次性完成所有这些 - 我可能会将第二个和第三个语句结合起来。但这在概念上很简单。诚然,如果您想围绕用户元素可能没有名称的可能性进行错误处理,这将变得更加复杂。(在这种情况下,此代码将引发 NullReferenceException。)

请注意,这假设您希望名称作为键,id 作为值。如果你想要哈希表反过来,只需切换 lambda 表达式的顺序。

于 2009-05-01T17:05:26.107 回答