Это моя классовая структура:десериализации XML объекта со словарем
class DataItem
{
public string Id { get; set; }
public string Type { get; set; }
private Dictionary<string, DataProperty> properties = new Dictionary<string, DataProperty>();
public Dictionary<string, DataProperty> Properties
{
get { return properties; }
set { properties = value; }
}
}
public class DataProperty
{
public string Key { get; set; }
public string Value { get; set; }
public bool Required { get; set; }
}
Это XML я хочу использовать (Примечание: я могу изменить XML, если это необходимо):
<Data>
<DataItem>
<id>ph15</id>
<type>core</type>
<properties>
<DataProperty>
<key>size</key>
<value>50%</value>
<required>false</required>
</DataProperty>
<DataProperty>
<key>color</key>
<value>red</value>
<required>true</required>
</DataProperty>
</properties>
</DataItem>
<DataItem>
<id>ph234</id>
<type>core</type>
<properties>
</properties>
</DataItem>
</Data>
В конечном итоге XML следует загрузить в другой словарь:
private Dictionary<string, DataItem> Mydata;
Я предлагаю сопоставить xml в более прямые поля и использовать атрибуты для сериализации [de]. Затем у вас есть логика для [de] заполнения словаря из/в другую структуру данных. Также LINQ to xml может быть вашим другом. –