I have a simple class derived from a generic list of string as follows:
[Serializable]
[System.Xml.Serialization.XmlRoot("TestItems")]
public class TemplateRoleCollection : List<string>
{
}
when I serialize this, I get the following XML:
<TestItems>
<string>cat</string>
<string>dog</string>
<string>wolf</string>
</TestItems>
Is there any way to override the xml element name which is used for serializing items in the collection?
I would like the following xml to be produced:
<TestItems>
<TestItem>cat</TestItem>
<TestItem>dog</TestItem>
<TestItem>wolf</TestItem>
</TestItems>
You don’t specify this at the class level, you specify it at the property level and use the
XmlArrayItemAttribute:Also note that
[Serializable]has no effect on XML serialization, it is used for binary or DataContract serialization.