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

もちろん、これをすべて一度に行うこともできます。おそらく、2 番目と 3 番目のステートメントを組み合わせます。しかし、それは概念的には可能な限り単純です。確かに、ユーザー要素に名前がない可能性を考慮してエラー処理を行いたい場合は、さらに複雑になります。(この場合、このコードは NullReferenceException をスローします。)

これは、名前をキーとして、id を値として使用することを前提としていることに注意してください。ハッシュテーブルを逆にしたい場合は、ラムダ式の順序を入れ替えるだけです。

于 2009-05-01T17:05:26.107 に答える