Linq to Xmlを使用して、SampleClassオブジェクトから必要なxmlを作成できます。
SampleClass sample = new SampleClass();
sample.SampleProperties = new Dictionary<string, List<string>>() {
{ "Name", new List<string>() { "Greg", "Tom" } },
{ "City", new List<string>() { "London", "Warsaw" } }
};
var result = new XElement("DataItem",
sample.SampleProperties.Select(kvp =>
new XElement(kvp.Key,
kvp.Value.Select(value => new XElement("value", value)))));
result.Save(path_to_xml);
出力:
<DataItem>
<Name>
<value>Greg</value>
<value>Tom</value>
</Name>
<City>
<value>London</value>
<value>Warsaw</value>
</City>
</DataItem>
xmlからの逆シリアル化:
SampleClass sample = new SampleClass();
sample.SampleProperties = XElement.Load(path_to_xml).Elements().ToDictionary(
e => e.Name.LocalName,
e => e.Elements().Select(v => (string)v).ToList());