我有这样一个类:
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>
我知道这可以通过属性来完成,但不知道如何做。当我像这样向测试类添加属性时:
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; }
}
关于c# - 如何将 XmlElementAttribute 用于 List<T>?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6462091/