加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

c# – 如何使用XmlElementAttribute for List?

发布时间:2020-12-15 08:10:25 所属栏目:百科 来源:网络整理
导读:我有一个这样的课: public class Level{ [XmlAttribute] public string Guid { get; set; }}public class LevelList : ListLevel{}public class Test{ public LevelList CalLevelList { get; set; }} 使用XmlSerializer,我得到这样的输出: CalLevelList Le
我有一个这样的课:
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; }
}

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读