Assuming the elements in your XML file are actually cased correctly, and the missing closing elements are present, you just need to change the type of your
KVPS
property from:
List<KeyValuePair<string, string>>
to
List<KVP<string, string>>
You're currently using the built-in
System.Collections.Generic.KeyValuePair<TKey, TValue>
type, which doesn't have a default constructor defined. If you switch to using your custom type, the deserialization will work as expected.