Nun, die LINQ to XML-Lösung ist wirklich einfach, also schlage ich vor, dass wir versuchen, Sie damit vertraut zu machen, anstatt eine komplexere Lösung zu erstellen. Hier ist der Code, mit vieler Erklärung ...
// 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
Natürlich Sie dies alles in einem Rutsch machen könnten - und ich würde wahrscheinlich die zweiten und dritte Aussagen kombinieren. Aber das ist so konzeptionell einfach wie es wahrscheinlich wird. Es würde komplizierter werden, wenn man die Fehlerbehandlung so um die Möglichkeit legen wollte, dass ein Benutzerelement zwar keinen Namen hat, aber zugegebenermaßen. (Dieser Code wird in diesem Fall eine NullReferenceException auslösen.)
Beachten Sie, dass davon ausgegangen wird, dass Sie den Namen als Schlüssel und ID als Wert verwenden möchten. Wenn Sie die Hashtabelle umgekehrt haben möchten, wechseln Sie einfach die Reihenfolge der Lambda-Ausdrücke.
Nun, LINQ to XML wird mit ziemlicher Sicherheit der einfachste Weg sein. Suchen Sie definitiv nach einer Nicht-LINQ-Lösung? –
Was ist mit XMLSerializer? Wäre das nicht einfacher als XLINQ? –