XML序列化列表<类>

本文关键字:列表 序列化 XML | 更新日期: 2023-09-27 18:01:36

我有问题反序列化XML,我不能完全弄清楚。主要是,当类在列表中但没有成功时,我试图避免必须嵌套类。例如:

[XmlRoot]
[Serializable]
public class Foo
{
    [XmlElement("Bar")]
    public BarElement Bar = new BarElement();
    public class BarElement
    {
        [XmlElement("MoreBars")]
        public List<MoreElement> MoreBars = new List<MoreElement>();
    }
    [XmlRoot("More")]
    [Serializable]
    public class MoreElement
    {
        [XmlAttribute("Attribute")]
        public string Attribute { get; set; }
        [XmlText]
        public string Value { get; set; }
    }
}

对应:

<Foo>
    <Bar>
        <MoreBars>
            <More Attribute=""></More>
            <More Attribute=""></More>
            <More Attribute=""></More>
            <More Attribute=""></More>
        </MoreBars>
    </Bar>
</Foo>

这几乎工作…但也不完全如此。通过将XmlRoot添加到MoreElement,我试图避免必须创建一个名为"MoreBarsElement"的新类,该类仅包含MoreElements的列表,因为访问"foo . bar . morebar . value"已经很麻烦了。这可能吗?如果有,我该怎么做?

XML序列化列表<类>

回答我自己的问题-看起来我需要

[XmlArray("MoreBars"), XmlArrayItem(typeof(MoreElement), ElementName = "More")]

在数组项声明上。它现在工作了,万岁!