我有一个从字符串的通用列表派生的简单类,如下所示:
[Serializable]
[System.Xml.Serialization.XmlRoot("TestItems")]
public class TemplateRoleCollection : List<string>
{
}
当我序列化时,我得到以下XML:
<TestItems>
<string>cat</string>
<string>dog</string>
<string>wolf</string>
</TestItems>
有没有办法覆盖用于序列化集合中项目的xml元素名称? 我想生成以下xml:
<TestItems>
<TestItem>cat</TestItem>
<TestItem>dog</TestItem>
<TestItem>wolf</TestItem>
</TestItems>
答案 0 :(得分:3)
您没有在班级指定此项,您在属性级别指定它并使用XmlArrayItemAttribute
:
public class ContainerClass
{
[XmlArray("TestItems")]
[XmlArrayItem("TestItem")]
public List<string> TemplateRoles { get; set; }
}
另请注意,[Serializable]
对XML序列化没有影响,它用于二进制或DataContract序列化。
答案 1 :(得分:0)
给出的答案对我来说并不总是有用,因为我需要直接从List继承。我发布了一个类似的问题,并被引导到这个答案Change XmlElement name for XML serialisation,它允许你这样做。