XML序列化列表<class> </class>

时间:2014-05-02 18:40:23

标签: c# xml

我遇到了反序列化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.MoreBars.Value”已经相当繁琐了。 。这可能吗?如果是这样,我该怎么做?

1 个答案:

答案 0 :(得分:0)

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

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

在数组项声明中。它现在有效,欢呼!