我有一个这样的课:
public class Level { [XmlAttribute] public string Guid { get; set; } } public class LevelList : List<Level> { } public class Test { public LevelList CalLevelList { get; set; } }
使用XmlSerializer,我得到这样的输出:
<CalLevelList> <Level Guid="0de98dfb-ce06-433f-aeae-786b6d920aa6"/> <Level Guid="0de98dfb-ce06-433f-aeae-786b6d920aa7"/> </CalLevelList>
这在技术上是正确的.但是,在不更改类名的情况下,我想使输出看起来像这样:
<Levels> <L Guid="0de98dfb-ce06-433f-aeae-786b6d920aa6"/> <L Guid="0de98dfb-ce06-433f-aeae-786b6d920aa7"/> </Levels>
我知道这可以通过属性完成,但无法弄清楚如何.当我向Test类添加一个属性时,如下所示:
public class Test { [XmlElement("Levels")] public LevelList CalLevelList { get; set; } }
输出非常令人惊讶:
<Levels Guid="0de98dfb-ce06-433f-aeae-786b6d920aa6"/> <Levels Guid="0de98dfb-ce06-433f-aeae-786b6d920aa7"/>
解决方法
试试这个:
public class Test { [XmlArray("Levels")] [XmlArrayItem("L")] public LevelList CalLevelList { get; set; } }