Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/xml/13.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# XML序列化列表<;类别>;_C#_Xml - Fatal编程技术网

C# XML序列化列表<;类别>;

C# XML序列化列表<;类别>;,c#,xml,C#,Xml,我在反序列化XML时遇到了一些问题,我不能完全弄清楚。主要是,我试图避免在类位于列表中但没有成功的情况下嵌套类。例如: [XmlRoot] [Serializable] public class Foo { [XmlElement("Bar")] public BarElement Bar = new BarElement(); public class BarElement { [XmlElement("MoreBars")]

我在反序列化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; }
    }
}
[XmlRoot]
[可序列化]
公开课Foo
{
[XmlElement(“条”)]
公共BarElement条=新BarElement();
公务舱
{
[XmlElement(“MoreBars”)]
public List MoreBars=新列表();
}
[XmlRoot(“更多”)]
[可序列化]
公共类元素
{
[XmlAttribute(“属性”)]
公共字符串属性{get;set;}
[XmlText]
公共字符串值{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”已经很麻烦了。这可能吗?如果是这样,我该怎么做?

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

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

在数组项声明上。好了,万岁

确保将此标记为其他人的答案(单击投票下方的复选标记)。