Используйте xml linq и помещайте результаты в словарь:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Xml;
using System.Xml.Linq;
namespace ConsoleApplication1
{
class Program
{
const string FILENAME = @"c:\temp\test.xml";
static void Main(string[] args)
{
XDocument doc = XDocument.Load(FILENAME);
XNamespace mNs = doc.Root.GetNamespaceOfPrefix("m");
XNamespace dNs = doc.Root.GetNamespaceOfPrefix("d");
Dictionary<string, string> dict = doc.Descendants(mNs + "properties").Elements()
.GroupBy(x => x.Name.LocalName, y => (string)y)
.ToDictionary(x => x.Key, y => y.FirstOrDefault());
}
}
}
для более чем одной записи используйте следующее:
Dictionary<string, Dictionary<string, string>> dict2 = doc.Descendants(ns + "entry")
.GroupBy(x => (string)x.Element(ns + "id"), y => y)
.ToDictionary(x => x.Key, y => y.Descendants(mNs + "properties").FirstOrDefault().Elements()
.GroupBy(a => a.Name.LocalName, b => (string)b)
.ToDictionary(a => a.Key, b => b.FirstOrDefault()));